Los Triggers en Windows Presentation Foundation surgen como necesidad de
disponer de mecanimos con los que pudiesemos responder mediante un
eventos o asignacion de valor o cualquier acción a un evento en específico.
Por esto se dispone de distintos tipos de triggers donde podemos destacar los
siguientes tres: Property triggers, Data triggers y Event triggers.
Estos tres tipos de triggers no están disponibles en todas las clases a traves de
la propiedad que exponen de nombre Triggers, a saber, la clase
FrameworkElement solo soporta Event Triggers sin embargo; Style,
DataTemplate y ControlTemplate acepta los tres tipos de triggers.
Property triggers
Es invocado cuando el valor de una dependency property cambia. Es decir,
cuando una dependency property tenga un valor determinado, se ejecutará.
En el siguiente ejemplo podemos ver como un Property Trigger cambia el
fondo de un botón a verde cuando el ratón pasa por encima, es decir, cuando
la dependency property IsMouseOver cambia de valor a True.
<Style TargetType="{x:Type Button}"> ... <Style.Triggers> <Trigger Property="IsMouseOver" Value="True" > <Setter Property="Background" Value="Green" /> </Trigger> </Style.Triggers> </Style>
Data triggers
Al igual que el tipo Property Triggers, los Data Triggers son lanzados en
función del valor de una propiedad, con la salvedad que esta propiedad aquí
puede ser cualquier tipo de .NET.
Mientras que los Property Triggers suelen ser usados para comprobar
propiedades que afectan al aspecto visual, los Data Triggers se usan
especialmente para comprobar propiedades que afectan más al terreno no
visual, es decir, al contenido.
En el siguiente ejemplo podemos ver como un Data Trigger cambia el fondo
de un Textbox en función del valor que tiene la propiedad Text.
<Style TargetType="{x:Type TextBox}"> ... <Style.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Text}" Value="Rojo"> <Setter Property="Foreground" Value="Red" /> </DataTrigger> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Text}" Value="Verde"> <Setter Property="Foreground" Value="Green" /> </DataTrigger> </Style.Triggers> </Style>
En este tipo de Triggers disponemos de los MultiTriggers y MutiDataTriggers
que nos aportan la posibilidad de añadir más de una condición al Trigger por
defecto consiguiendo expresar un AND lógico. Para ello estas clases disponen
de la propiedad Conditions donde añadiremos tantas condiciones como
desemos.
En el siguiente ejemplo veremos como el trigger se lanzará cuando las
propiedaes HasItems y Width tengan unos determinados valores:
<Style.Triggers> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="HasItems" Value="false" /> <Condition Property="Width" Value="Auto" /> </MultiTrigger.Conditions> <Setter Property="MinWidth" Value="120"/> </MultiTrigger> </Style.Triggers>
Event triggers
Despues de ver los dos tipos anteriores de triggers, este Event Triggers su
propio nombre lo indica, no se fija en propiedades ya sea Dependency
Properties o CLR Properties sino que se fija en eventos.
Cuando un Routed Event es lanzado, un Event Trigger puede realizar una
función como consecuencia de ello.
En el siguiente ejemplo podemos ver como una animación es arrancada
cuando el evento Click es lanzado:
<Style.Triggers> <EventTrigger RoutedEvent="Click"> <EventTrigger.Actions> <BeginAction TargetName="StoryBoard1" /> </EventTrigger.Actions> </EventTrigger> </Style.Triggers>
En el siguiente post veremos un ejemplo de como hacer las animaciones con Trigguers a partir de Blend
Los Triggers en Windows Presentation Foundation surgen como necesidad de disponer de mecanimos
muy bueno el aporte
como mantengo un estilo, ex. mouseenter pero despues de que sale lo pierde …..