WPF數(shù)據(jù)觸發(fā)器檢測(cè)非依賴屬性
我們?cè)谝郧暗奈恼轮?,曾?jīng)向大家介紹了有關(guān)屬性觸發(fā)器的一些介紹。可以知道,它是一種最常見的觸發(fā)器類型。其實(shí),WPF數(shù)據(jù)觸發(fā)器和屬性觸發(fā)器除了面對(duì)的對(duì)象類型不一樣外完全相同。#t#
WPF數(shù)據(jù)觸發(fā)器是來(lái)檢測(cè)非依賴屬性------也就是用戶自定義的.NET屬性-----的值發(fā)生變化時(shí)來(lái)觸發(fā)并調(diào)用符合條件的一系列Setter集合。
下邊的示例演示了在綁定的ListBox里如果某個(gè)User對(duì)象符合某種特點(diǎn)(Role=Admin),則以突出方式顯示這個(gè)對(duì)象。這里就用了DataTrigger,因?yàn)閃PF數(shù)據(jù)觸發(fā)器需要檢測(cè)的是User對(duì)象的屬性Role,這個(gè)對(duì)象是自定義的非可視化對(duì)象并且其屬性為普通.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中,其針對(duì)的是每個(gè)ListBox的項(xiàng),當(dāng)其被綁定的數(shù)據(jù)的屬性Role為Admin時(shí),突出顯示:
- < Style TargetType=
"{x:Type ListBoxItem}">- < Style.Triggers>
- < DataTrigger Binding=
"{Binding Path=Role}"
Value="Admin">- < Setter Property=
"Foreground" Value="Red" />- < /DataTrigger>
- < /Style.Triggers>
- < /Style>