Triggers are a very important feature of WPF that helps to change the visual effect of a framework element or control. Triggers are used in styles to change the visual effect of a WPF element when a property or data is changed or an event is fired. For changing the visual effect of a WPF element, triggers reduce the code in code behind.
- private void Rectangle_MouseMove_1(object sender, MouseEventArgs e)
- {
- this.rctback.Fill = Brushes.Red;
- }
- private void Rectangle_MouseLeave(object sender, MouseEventArgs e)
- {
- this.rctback.Fill = Brushes.Green;
- }
- <Rectangle Name="rctback" HorizontalAlignment="Left" Height="100" Stroke="Black" VerticalAlignment="Top" Width="100" Margin="178,92,0,0" >
- <Rectangle.Style>
- <Style TargetType="Rectangle">
- <Setter Property="Fill" Value="Green"></Setter>
- <Style.Triggers>
- <Trigger Property="IsMouseOver" Value="True">
- <Setter Property="Fill" Value="Red" />
- </Trigger>
- </Style.Triggers>
- </Style>
- </Rectangle.Style>
- </Rectangle>
- Trigger or Property trigger
- Data Trigger
- Event Trigger
Trigger or Property Trigger
It's a default trigger of WPF and tagged as <Trigger>. This trigger is fired when the property of an owned control is changed.
Example
- <Rectangle Name="rctback" HorizontalAlignment="Left" Height="100" Stroke="Black" VerticalAlignment="Top" Width="100" Margin="178,92,0,0" >
- <Rectangle.Style>
- <Style TargetType="Rectangle">
- <Setter Property="Fill" Value="Green"></Setter>
- <Style.Triggers>
- <Trigger Property="IsMouseOver" Value="True">
- <Setter Property="Fill" Value="Red" />
- </Trigger>
- </Style.Triggers>
- </Style>
- </Rectangle.Style>
- </Rectangle>
Data Trigger
This trigger is tagged as <DataTrigger> and fires when the data bound with the control is changed.
- <Rectangle Name="rctback" HorizontalAlignment="Left" Height="100" Stroke="Black" VerticalAlignment="Top" Width="100" Margin="178,92,0,0" >
- <Rectangle.Style>
- <Style TargetType="Rectangle">
- <Setter Property="Fill" Value="Green"></Setter>
- <DataTrigger Binding="{Binding ElementName=cbSample, Path=IsChecked}" Value="True">
- <Setter Property="Fill" Value="Red" />
- </DataTrigger>
- </Style>
- </Rectangle.Style>
- </Rectangle>
Event Trigger
An Event trigger is fired when an action is done with the control and tagged as <EventTrigger>.
- <Rectangle Name="rctback" HorizontalAlignment="Left" Height="100" Stroke="Black" VerticalAlignment="Top" Width="100" Margin="178,92,0,0" >
- <Rectangle.Style>
- <Style TargetType="Rectangle">
- <Setter Property="Fill" Value="Green"></Setter>
- <Style.Triggers>
- <EventTrigger RoutedEvent="MouseEnter">
- <EventTrigger.Actions>
- <BeginStoryboard>
- <Storyboard>
- <DoubleAnimation Duration="0:0:0.800" Storyboard.TargetProperty="Height" To="300" />
- <DoubleAnimation Duration="0:0:0.800" Storyboard.TargetProperty="Width" To="300" />
- </Storyboard>
- </BeginStoryboard>
- </EventTrigger.Actions>
- </EventTrigger>
- <EventTrigger RoutedEvent="MouseLeave">
- <EventTrigger.Actions>
- <BeginStoryboard>
- <Storyboard>
- <DoubleAnimation Duration="0:0:0.800" Storyboard.TargetProperty="Height" To="100" />
- <DoubleAnimation Duration="0:0:0.800" Storyboard.TargetProperty="Width" To="100" />
- </Storyboard>
- </BeginStoryboard>
- </EventTrigger.Actions>
- </EventTrigger>
- </Style.Triggers>
- </Style>
- </Rectangle.Style>
- </Rectangle>
I hope you now understand WPF triggers and types of triggers.
Debendra DashPosted Jul 3, 2015, 9:23 AM
good one sir.....
Chiheb ChebbiPosted Jun 29, 2015, 10:23 AM
nice thanks
Santhakumar MunuswamyPosted Jun 6, 2015, 2:28 AM
Nice one
Sam HobbsPosted Jun 4, 2015, 6:33 PM
I wonder what the difference is between events and triggers.