63 votes

Dans WPF, l’ordre des déclencheurs est-il important?

J'ai le xaml suivant:

 <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>
 

Ce qui se passe est que lorsque je passe la souris sur le bouton, le premier plan devient jaune, puis lorsque j'appuie sur le bouton, le premier plan devient vert.

Maintenant, si j'inverse l'ordre de mes déclencheurs dans le code XAML, le premier plan devient jaune lorsque je passe la souris dessus, mais lorsque j'appuie sur le bouton, le premier plan NE devient PAS vert.

Quelle est l'explication pour ça? Est-ce que l'un des déclencheurs est supérieur à l'autre?

83voto

JaredPar Points 333733

WPF traite vos déclencheurs dans l'ordre déclaré. Dans le deuxième exemple, le premier plan est brièvement changé en vert. Mais ensuite, le déclencheur IsMouseOver s'exécute et redéfinit la couleur en jaune.

IsMouseOver n'a aucun lien avec IsPressed en termes de priorité. L’important est l’ordre de déclaration en XAML des déclencheurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X