Iniciar sesión
Registrarse
He olvidado mi contraseña
27 JUN 2011
Vistas de la Entrada 5 Vistas de la Entrada 0
WPF
[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

Enviado por
Compartir : Compartir en Facebook Compartir en Twitter Compartir en Google+ Compartir en Linkedin
Dejar un comentario
Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Dejar una respuesta

C#

Tip Rapido: Método Extensor

Bueno aquí va un mini-post. Cuantas veces os habéis encontrado con: if (a>=5 and a<=10) … Yo al menos recuerdo unas pocas. Bueno aquí va el mini truco. Creamos una clase estática con un método extensor: Code Snippet public static class ExtensionMethod  {    public  static bool Between(this int original, int menor, int mayor)      {          return (original […]

Enviado por
C# Patrones

Patrón UoW Parte 2

Introducción En vista de que parece que el artículo que publique ayer sobre UoW, parecía que era demasiado simple…, y a pesar de que Lucas Ontivero ha publicado un ejemplo (Gracias), he decidido publicar un ejemplo un poco más amplio para ver su utilización. Usando el Patrón Partiendo de una clase base: 1: public abstract […]

Enviado por
Sin categoría

[Opinión]Los Nuevos Programadores y VB o C#

Llevo relativamente poco tiempo en el mundo de la programación ya que mis orígenes, los verdaderos, serán del 2001 con C, aunque anteriormente ya había hecho cosas con Visual Basic 6. Por si no lo he dicho nunca, o no me has leído decirlo me encanta programar. Después de la primera introducción voy al hilo […]

Enviado por
C# MCC PERSONAL VB VS WinForms

[Personal] Microsoft Community Contributor 2011

En mi revisión matutina del correo, me he encontrado una más que Grata Sorpresa: Dear Javier, Congratulations! We’re pleased to inform you that your contributions to Microsoft online technical communities have been recognized with the Microsoft Community Contributor Award. The Microsoft Community Contributor Award is reserved for participants who have made notable contributions in Microsoft […]

Enviado por
Sin categoría

[Personal] MVP Visual C# 2011

Buenas tardes a todos, Este post es como dice el titulo para anunciar que he sido galordando por el premio MVP de Microsoft en la categoria de C#. Desde aquí quiero darles las gracias a los chicos de Microsoft empezando por Cristina Gonzalez, Jose Bonnin, David Salgado, Boris Armenta… También mi gratitud a la gente de […]

Enviado por