C#WPF动态按钮样式基于X:名称或X:键的图片不同



我想制作像shakes&烦躁不安。我被困在主菜单上,在那里我已经像往常一样过度复杂化的东西。我制作了一个网格布局,将按钮放置,但是每个按钮都是图片。我使用ImageBrush 用于我要创建的每个按钮的图片。

我想为每个按钮创建一种样式,以便他们根据拥有的x:Namex:Key更改背景。因此,具有x:Namex:Key" PlayGame"的按钮会发现它是playgame.png, PlayGame_HoverPlayGame_OnClick,其中"玩游戏"是一个变量。换句话说,我想拥有一种可以过滤x:name或x:按钮的键的样式,并以后将其用作变量,以便我可以这样做:{staticResource variablename}

我现在拥有的代码是:

    <ImageBrush x:Key="PlayGame">
        <ImageBrush.ImageSource>
            <BitmapImage UriSource="./Pictures/PlayGameButton.png"/>
        </ImageBrush.ImageSource>
    </ImageBrush>
    <ImageBrush x:Key="PlayGame_Hover">
        <ImageBrush.ImageSource>
            <BitmapImage UriSource="./Pictures/PlayGameButton_Hover.png"/>
        </ImageBrush.ImageSource>
    </ImageBrush>
    <ImageBrush x:Key="PlayGame_OnClick">
        <ImageBrush.ImageSource>
            <BitmapImage UriSource="./Pictures/PlayGameButton_OnClick.png"/>
        </ImageBrush.ImageSource>
    </ImageBrush>
    <Style TargetType="{x:Type Button}">
        <Setter Property="Background" Value="{StaticResource PlayGame}" />
        <Setter Property="FontSize" Value="15" />
        <Setter Property="SnapsToDevicePixels" Value="True" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Border CornerRadius="4" Background="{TemplateBinding Background}">
                        <Grid>
                            <ContentPresenter x:Name="MyContentPresenter" Content="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,0" />
                        </Grid>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Background" Value="{StaticResource PlayGame_Hover}" />
                        </Trigger>
                        <Trigger Property="IsPressed" Value="True">
                            <Setter Property="Background" Value="{StaticResource PlayGame_OnClick}" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

我找到了一个不是很有效的解决方案,但不是我真正想要的

您可以给风格一个

x:key =" stylekey"

,您必须给按钮此部分:

style =" {staticResource stylekey}"

这样,您将必须为要拥有的每个不同按钮制作一种样式,但是它将起作用,如果效率不是关键,您将对它感到满意。:D

相关内容

  • 没有找到相关文章

最新更新