En WPF, ¿importa el orden de los Disparadores?
Tengo el siguiente 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>
Lo que sucede es que cuando paso el ratón sobre el botón, el primer plano cambia a amarillo y luego cuando presiono el botón, el primer plano cambia a verde.
Ahora, si invierto el orden de mis disparadores en el XAML, el primer plano cambia a amarillo cuando paso el ratón sobre él, pero cuando presiono el botón, el primer plano NO cambia a verde.
¿Cuál es la explicación para esto? ¿Un disparador anula el otro?
2 answers
WPF está procesando sus disparadores en orden declarado. En el segundo ejemplo, el primer plano se cambia brevemente a verde. Pero entonces el gatillo IsMouseOver se ejecuta y establece el color de nuevo a amarillo.
IsMouseOver no tiene relación con IsPressed en términos de precedencia. Lo importante es el orden de declaración en XAML de los disparadores.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-18 14:12:56
En resumen: los disparadores se procesan en orden.
Los disparadores posteriores' pueden anular los disparadores anteriores.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-26 08:29:25