代码之家  ›  专栏  ›  技术社区  ›  ScottG

在WPF中,触发器的顺序重要吗?

  •  50
  • ScottG  · 技术社区  · 16 年前

    我有以下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>
    

    当我将鼠标移到按钮上时,前景将变为黄色,然后当我按下按钮时,前景将变为绿色。

    现在,如果在XAML中反转触发器的顺序,当我将鼠标移到前景上时,前景将变为黄色,但当我按下按钮时,前景不会变为绿色。

    对此有何解释?一个触发器是否凌驾于另一个触发器之上?

    2 回复  |  直到 13 年前
        1
  •  81
  •   JaredPar    16 年前

    WPF正在按声明的顺序处理触发器。在第二个示例中,前景曾短暂地变为绿色。但随后IsMouseOver触发器运行并将颜色设置回黄色。

        2
  •  27
  •   Drew Noakes    5 年前

    简而言之:触发器是按顺序处理的。