[WPF]Triggers

Definición

Un Trigger es un desencadenador de una determinada Acción.

Va a permitir cambiar el valor de alguna propiedad o comenzar una animación existente, cuando se cumpla una determinada condición.

Tipos

Existen distintos tipos de Triggers:

=> Trigger simple: Sucede cuando una determinada Propiedad presenta un valor indicado. Ejemplo:

       1: <Triggers>

       2:     <Trigger Property="IsSelected" Value="True">

       3:         <Setter TargetName="desc" Property="Foreground" Value="Blue"/>

       4:     </Trigger>

       5: </Triggers>

La explicación sería: Cuando la propidad IsSelected (el ejemplo es para un Item de un ListBox) se establece a True, cambiaremos la propiedad Foreground al color Azul en el objeto “desc”.

Dentro del contenido del Trigger, podremos establecer tantos “Setters” como necesitemos.

Se pueden utilizar las propiedades EnterActions y ExitActions del Trigger, para definir el comportamiento al lanzarse el Trigger, y cuando vuelve al valor original.

=> EventTrigger: se desencadena cuando un evento sucede. Ejemplo:

 

   1: <Rectangle Fill="Red"  Height="176" HorizontalAlignment="Left" Margin="94,94,0,0" 

   2:    Name="rectangle1" Stroke="Black" VerticalAlignment="Top" Width="316">

   3:             <Rectangle.Triggers>

   4:                 <EventTrigger RoutedEvent="Rectangle.Loaded">

   5:                     <BeginStoryboard>

   6:                         <Storyboard>

   7:                             <DoubleAnimation

   8:                                     Storyboard.TargetName="rectangle1" 

   9:                                     Storyboard.TargetProperty="Opacity"

  10:                                     From="0.0" To="1.0" Duration="0:0:2" />

  11:                             <DoubleAnimation Storyboard.TargetName="rectangle1" 

  12:                                  Storyboard.TargetProperty="Width" BeginTime="0:0:2" 

  13:                                     From="316" To="400" Duration="0:0:3"/>

  14:                         </Storyboard>

  15:                         

  16:                     </BeginStoryboard>

  17:                 </EventTrigger>

  18:             </Rectangle.Triggers>

  19:             </Rectangle> 

La explicación sería: Cuando se produzca el evento Loaded del rectángulo, haremos que se haga visible de forma gradual, y lo moveremos a la derecha desde su posición inicial.

=> MultiTrigger: se desencadenan cuando un conjunto de condiciones se cumplen. Ejemplo:

   1: <ListBox >

   2:             <ListBox.Style>

   3:                 <Style>

   4:                     <Style.Triggers>

   5:  

   6:  

   7:                     <MultiTrigger>

   8:                         <MultiTrigger.Conditions>

   9:                                 <Condition Property="ListBox.HasItems" Value="False" />

  10:                                 <Condition Property="ListBox.Width" Value="Auto" />

  11:                         </MultiTrigger.Conditions>

  12:                             <Setter Property="ListBox.Background" Value="Red"/>

  13:                     </MultiTrigger>

  14:  

  15:                  </Style.Triggers>

  16:                 </Style> 

  17:             </ListBox.Style>

  18:         </ListBox>

La explicación sería: Si las propiedades HasItems y Width tienen como valores False y Auto, respectivamente, el color de fondo del ListBox se establecerá a Rojo.

=> DataTrigger y MultiDataTrigger: se desencadenan cuando una o varias condiciones enlazadas a datos se cumplen.

   1: <DataTrigger Binding="{Binding Path=Nombre}" Value="Javier">

   2:        <Setter Property="Foreground" Value="Green" />

   3:      </DataTrigger>    

   1: <MultiDataTrigger>

   2:         <MultiDataTrigger.Conditions>

   3:           <Condition Binding="{Binding Path=Nombre}" Value="Javier" />

   4:           <Condition Binding="{Binding Path=Apellidos}" Value="Torrecilla Puertas" />

   5:         </MultiDataTrigger.Conditions>

   6:         <Setter Property="ForeGround" Value="DarkBlue" />

   7:       </MultiDataTrigger>

Conclusión

Los trigger, nos va a permitir de forma cómoda el cambio de ciertas propiedades directamente desde el código XAML, sin tener que escribir código C# o VB.

Espero que os sea de utilidad.

Fuentes: Trigger en MSDN

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *