counter for tumblr
[WPF]Triggers - El blog de Javier Torrecilla

[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

Published 27/6/2011 12:23 por Javier Torrecilla
Archivado en:
Comparte este post:

Comentarios

Wednesday, August 17, 2011 1:57 PM por Ivan Martinez

# re: [WPF]Triggers

Excelente introducción a los Triggers, saludos!