如果相应的属性设置在Trigger
之外,是否可以将Style
保留在Style
内?
第二个Button
工作正常,但Trigger
不适用于第一个Button
。
<StackPanel>
<StackPanel.Resources>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<Trigger Property="IsMouseOver"
Value="True">
<Setter Property="Foreground"
Value="GreenYellow" />
</Trigger>
</Style.Triggers>
</Style>
</StackPanel.Resources>
<Button Foreground="Orange">The First Button</Button>
<Button>The Second Button</Button>
</StackPanel>
答案 0 :(得分:1)
这不起作用的原因是本地依赖项属性值优先于setter设置的属性值:https://msdn.microsoft.com/en-us/library/ms743230(v=vs.110).aspx。
所以不,不能在Setter
中使用Style
来设置已设置为本地值的属性:
<Button Foreground="Orange">The First Button</Button>
答案 1 :(得分:1)
您必须在Style
。
<StackPanel>
<StackPanel.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Foreground" Value="Orange"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="GreenYellow" />
</Trigger>
</Style.Triggers>
</Style>
</StackPanel.Resources>
<Button>The First Button</Button>
<Button>The Second Button</Button>
</StackPanel>
查看https://msdn.microsoft.com/en-us/library/ms743230.aspx
上的依赖项属性设置优先级列表如果你想让它变得动态。您必须使用额外的CustomButton
编写自己的DependencyProperty
并为其编写自己的Style
。