我有这些控件:
<Border Style="{StaticResource Button}">
<TextBlock>NEW</TextBlock>
</Border>
<Border Style="{StaticResource Button}">
<TextBlock>CLOSE</TextBlock>
</Border>
<Border Style="{StaticResource Button}">
<TextBlock>EXIT</TextBlock>
</Border>
这种风格:
<Style x:Key="Button" TargetType="{x:Type Border}">
<Setter Property="Padding" Value="15, 10" />
<Setter Property="Margin" Value="5, 0" />
<Setter Property="MinWidth" Value="150" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Cursor" Value="Hand" />
</Trigger>
</Style.Triggers>
<Style.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
</Style.Resources>
</Style>
我想将每个按钮/边框设置为每个特定的不同颜色,并为IsMouseOver设置另一种颜色。
我尝试在控件上设置Background
,但是样式无法覆盖背景,我无法进行IsMouseOver更改。
我只能想到为每个人用他们的颜色创造一种不同的风格,但无论如何要做一个部分样式,就像你在CSS中做的那样?
<div class="button blue">NEW</div>
<div class="button red">CLOSE</div>
<div class="button gray">EXIT</div>
还是以其他方式实现这一目标?
答案 0 :(得分:3)
我有一段时间没有做任何XAML,所以我有点生气。我很确定你不能做部分样式,但我知道你可以使用“BasedOn”继承样式。
https://msdn.microsoft.com/en-us/library/system.windows.style.basedon(v=vs.110).aspx
这将允许您执行基本按钮样式,然后根据常用样式功能为您需要的每种颜色创建颜色变体。
<Style x:Key="Button" TargetType="{x:Type Border}">
<Setter Property="Padding" Value="15, 10" />
<Setter Property="Margin" Value="5, 0" />
<Setter Property="MinWidth" Value="150" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Cursor" Value="Hand" />
</Trigger>
</Style.Triggers>
<Style.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
</Style.Resources>
</Style>
<Style x:Key="ButtonBlue" TargetType="{x:Type Border}" BasedOn="{StaticResource Button}">
<Setter Property="Background" Value="Blue" />
</Style>
类似的东西,然后你使用“ButtonBlue”而不是“Button”作为你在XAML中为你想要变成蓝色的控件引用的静态资源。您应该能够在继承样式中添加触发器。希望我能正确记住我的语法。
此外,您可能希望将样式键更改为“按钮”以外的其他内容。可能有点混乱。