我们在以前的文章中,曾经向大家介绍了有关属性触发器的一些介绍。可以知道,它是一种最常见的触发器类型。其实,WPF数据触发器和属性触发器除了面对的对象类型不一样外完全相同。#t#
WPF数据触发器是来检测非依赖属性------也就是用户自定义的.NET属性-----的值发生变化时来触发并调用符合条件的一系列Setter集合。
下边的示例演示了在绑定的ListBox里如果某个User对象符合某种特点(Role=Admin),则以突出方式显示这个对象。这里就用了DataTrigger,因为WPF数据触发器需要检测的是User对象的属性Role,这个对象是自定义的非可视化对象并且其属性为普通.NET属性。
- < Page.Resources>
- < clr:Users x:Key="myUsers" />
- < DataTemplate DataType=
"{x:Type clr:User}">- < TextBlock Text="
{Binding Path=Name}"/>- < /DataTemplate>
- ...
- < /Page.Resources>
- < StackPanel>
- < ListBox Width="200"
- ItemsSource="{Binding
Source={StaticResource
myUsers}}" />- < /StackPanel>
WPF数据触发器主要的部分定义在了Style中,其针对的是每个ListBox的项,当其被绑定的数据的属性Role为Admin时,突出显示:
- < Style TargetType=
"{x:Type ListBoxItem}">- < Style.Triggers>
- < DataTrigger Binding=
"{Binding Path=Role}"
Value="Admin">- < Setter Property=
"Foreground" Value="Red" />- < /DataTrigger>
- < /Style.Triggers>
- < /Style>