在WPF中,触发器的顺序是否重要?
我有以下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>
发生什么事情是,当我将鼠标放在button上时,前景变为黄色,然后当按下button时,前景变为绿色。
现在,如果我将XAML中的触发器的顺序颠倒过来,当将鼠标移到XAML上时,前景变为黄色,但是当按下button时,前景不会变为绿色。
这是什么解释? 是否触发了另一个触发器?
WPF正在按照声明的顺序处理你的触发器。 在第二个例子中,前景被简短地改为绿色。 但是,然后IsMouseOver触发器运行并将颜色设置回黄色。
IsMouseOver在优先级上与IsPressed没有任何关系。 重要的是触发器的XAML中的声明顺序。
简而言之:触发器按顺序处理。
后来的触发器'可以覆盖更早的触发器。