WPF數據觸發器檢測非依賴屬性
我們在以前的文章中,曾經向大家介紹了有關屬性觸發器的一些介紹。可以知道,它是一種最常見的觸發器類型。其實,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>