Property Triggers
在Triggers集合中一个Trigger对象,当Trigger中定义的条件满足时,则会触发相应的操作,下面例子当鼠标移动到按钮上时,鼠标会变成手状态.
<Window x:Class="Example_07.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:Example_07" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"><Window.Resources><Style TargetType="Button"><Style.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter Property="Cursor" Value="Hand" /></Trigger></Style.Triggers></Style></Window.Resources><Grid><Button Width="200" Height="100" Grid.Row="0" Grid.ColumnSpan="2">Hello World</Button></Grid></Window>
Data Triggers
Data Triggers 表示当绑定的数据满足条件时,会执行相应操作,这里我们先做一个简单的DataTrigger演示,当我们选中CheckBox时,会改变对应TextBlock中的值
<Window x:Class="Example_07.DataTriggerSample"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:Example_07" mc:Ignorable="d" Title="DataTriggerSample" Height="200" Width="300"><Window.Resources><Style TargetType="TextBlock"><Style.Triggers><DataTrigger Binding="{Binding ElementName=cbIsPass,Path=IsChecked}" Value="True"><Setter Property="Text" Value="Pass"></Setter><Setter Property="Foreground" Value="Green"></Setter><Setter Property="FontSize" Value="40"></Setter></DataTrigger><DataTrigger Binding="{Binding ElementName=cbIsPass,Path=IsChecked}" Value="False"><Setter Property="Text" Value="NO"></Setter><Setter Property="Foreground" Value="Red"></Setter><Setter Property="FontSize" Value="40"></Setter></DataTrigger></Style.Triggers></Style></Window.Resources><Grid><Grid.RowDefinitions><RowDefinition Height="20"></RowDefinition><RowDefinition Height="100"></RowDefinition></Grid.RowDefinitions><CheckBox Grid.Row="0" Name="cbIsPass" Content="是否通过" Width="100" Height="30"></CheckBox><TextBlock Grid.Row="1" TextAlignment="Center"></TextBlock></Grid></Window>
Event Triggers
<Window x:Class="Example_07.EventTriggerSample"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:Example_07" mc:Ignorable="d" Title="EventTriggerSample" Height="450" Width="800"><Window.Resources><Style TargetType="TextBlock"><Style.Triggers><EventTrigger RoutedEvent="MouseEnter"><EventTrigger.Actions><BeginStoryboard><Storyboard><DoubleAnimation Duration="0:0:3" Storyboard.TargetProperty="FontSize" To="100"/></Storyboard></BeginStoryboard></EventTrigger.Actions></EventTrigger><EventTrigger RoutedEvent="MouseLeave"><EventTrigger.Actions><BeginStoryboard><Storyboard><DoubleAnimation Duration="0:0:3" Storyboard.TargetProperty="FontSize" To="18" /></Storyboard></BeginStoryboard></EventTrigger.Actions></EventTrigger></Style.Triggers></Style></Window.Resources><StackPanel VerticalAlignment="Center"><TextBlock Text="事件触发器" TextAlignment="Center"></TextBlock></StackPanel></Window>
我们介绍了WPF常用的三种类型触发器Trigger、DataTrigger、EventTrigger另外还有两种多条件触发器MultiTrigger、MultiDataTrigger满足多个条件是触发