DataTrigger数据触发器
实现效果:
- MultiDataTrigger 的 Condition 元素指定,如果 Place 数据项的 Name 和 State 分别为 Portland 和 OR,则相应的 ListBoxItem 的背景设置为 Cyan。
实践:
- MultiDataTrigger在绑定数据满足一组条件时应用(或多项)属性值或执行操作。
代码:
一个及多个条件的触发器,
<Style TargetType="ListBoxItem">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=State}" Value="WA">
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=Name}" Value="Portland" />
<Condition Binding="{Binding Path=State}" Value="OR" />
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="Cyan" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
针对数据类型的数据模板:
<DataTemplate DataType="{x:Type local:Place}">
<Canvas Width="160" Height="20">
<TextBlock FontSize="12"
Width="130" Canvas.Left="0" Text="{Binding Path=Name}"/>
<TextBlock FontSize="12" Width="30"
Canvas.Left="130" Text="{Binding Path=State}"/>
</Canvas>
</DataTemplate>
xaml代码:
<StackPanel>
<TextBlock FontSize="18" Margin="5" FontWeight="Bold"
HorizontalAlignment="Center">Data Trigger Sample</TextBlock>
<ListBox Width="180" HorizontalAlignment="Center" Background="Honeydew"
ItemsSource="{Binding Source={StaticResource PlacesData}}"/>
</StackPanel>
扩展:
- MultiDataTrigger 对象与 MultiTrigger 类似,但 MultiDataTrigger 的条件基于绑定数据的属性值,而不是 UIElement 的属性值。
- 在 MultiDataTrigger 中,当数据项的属性值与指定的 Value 匹配时,会满足一个条件。 然后,可以在满足所有条件时使用 Setter 或 EnterActions 和 ExitActions 属性来应用更改或启动操作。
- MultiDataTrigger 对象的 Setters 属性只能由 Setter 对象组成。 将 Setter 子项添加到 MultiDataTrigger 对象会将其隐式添加到 MultiDataTrigger 对象的 SetterBaseCollection。 EventSetter 对象不受支持;只有 Style.Setters 支持 EventSetter 对象。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。