WPF數(shù)據(jù)觸發(fā)器檢測非依賴屬性
我們在以前的文章中,曾經(jīng)向大家介紹了有關(guān)屬性觸發(fā)器的一些介紹??梢灾?,它是一種最常見的觸發(fā)器類型。其實,WPF數(shù)據(jù)觸發(fā)器和屬性觸發(fā)器除了面對的對象類型不一樣外完全相同。#t#
WPF數(shù)據(jù)觸發(fā)器是來檢測非依賴屬性------也就是用戶自定義的.NET屬性-----的值發(fā)生變化時來觸發(fā)并調(diào)用符合條件的一系列Setter集合。
下邊的示例演示了在綁定的ListBox里如果某個User對象符合某種特點(Role=Admin),則以突出方式顯示這個對象。這里就用了DataTrigger,因為WPF數(shù)據(jù)觸發(fā)器需要檢測的是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數(shù)據(jù)觸發(fā)器主要的部分定義在了Style中,其針對的是每個ListBox的項,當(dāng)其被綁定的數(shù)據(jù)的屬性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>