我想制作像shakes&烦躁不安。我被困在主菜单上,在那里我已经像往常一样过度复杂化的东西。我制作了一个网格布局,将按钮放置,但是每个按钮都是图片。我使用ImageBrush 用于我要创建的每个按钮的图片。
我想为每个按钮创建一种样式,以便他们根据拥有的x:Name
或x:Key
更改背景。因此,具有x:Name
或x:Key
" PlayGame"的按钮会发现它是playgame.png, PlayGame_Hover
, PlayGame_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