我有以下xaml:
<DockPanel>
<DockPanel.Resources>
<Style TargetType="Button">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Yellow"></Setter>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Foreground" Value="Green"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</DockPanel.Resources>
<Button Content="Cut" Height="30" Width="75"/>
</DockPanel>
Run Code Online (Sandbox Code Playgroud)
当我将鼠标悬停在按钮上时,前景变为黄色,然后当我按下按钮时,前景变为绿色.
现在,如果我在XAML中反转触发器的顺序,当我将鼠标悬停在它上面时,前景会变为黄色,但是当我按下按钮时,前景不会变为绿色.
对此有何解释?一个触发器是否会覆盖另一个触发器?
Jar*_*Par 72
WPF正在按声明的顺序处理您的触发器.在第二个例子中,前景如此短暂地变为绿色.但随后IsMouseOver触发器运行并将颜色设置回黄色.
IsMouseOver在优先级方面与IsPressed没有任何关系.重要的是XAML中触发器的声明顺序.