DataTrigger 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示一个触发器,它会在绑定数据满足指定条件时应用属性值或执行操作。
public ref class DataTrigger : System::Windows::TriggerBase, System::Windows::Markup::IAddChild
[System.Windows.Markup.ContentProperty("Setters")]
public class DataTrigger : System.Windows.TriggerBase, System.Windows.Markup.IAddChild
[System.Windows.Markup.ContentProperty("Setters")]
[System.Windows.Markup.XamlSetMarkupExtension("ReceiveMarkupExtension")]
public class DataTrigger : System.Windows.TriggerBase, System.Windows.Markup.IAddChild
[<System.Windows.Markup.ContentProperty("Setters")>]
type DataTrigger = class
inherit TriggerBase
interface IAddChild
[<System.Windows.Markup.ContentProperty("Setters")>]
[<System.Windows.Markup.XamlSetMarkupExtension("ReceiveMarkupExtension")>]
type DataTrigger = class
inherit TriggerBase
interface IAddChild
Public Class DataTrigger
Inherits TriggerBase
Implements IAddChild
- 继承
- 属性
- 实现
示例
在以下示例中ItemsSource,位置ListBox对象绑定到 Places 对象ObservableCollection<T>。 放置 对象具有属性 名称和**状态。
每个对象都显示 一个 Place 对象。ListBoxItem ListBox 本 Style 示例中应用于每个 ListBoxItem示例。
指定的DataTrigger是,如果 “位置”数据项 的状态 为“WA”,则相应的ListBoxItem前台将设置为“红色”。
<Window.Resources>
<c:Places x:Key="PlacesData"/>
<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 c: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>
</Window.Resources>
<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>
以下示例演示如何在绑定数据满足指定条件时使用、DataTriggerBeginStoryboard操作和Storyboard动画处理属性。 该示例在控件中 ListBox 显示清单信息。 它使用一个DataTrigger动画OpacityListBoxItem处理每一个包含库存不足书籍的书籍。
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="DataTriggerStoryboardExample">
<Page.Resources>
<XmlDataProvider x:Key="InventoryData" XPath="Inventory/Books">
<x:XData>
<Inventory xmlns="">
<Books>
<Book ISBN="0-7356-0562-9" Stock="in" Number="9">
<Title>XML in Action</Title>
<Summary>XML Web Technology</Summary>
</Book>
<Book ISBN="0-7356-1370-2" Stock="in" Number="8">
<Title>Programming Microsoft Windows With C#</Title>
<Summary>C# Programming using the .NET Framework</Summary>
</Book>
<Book ISBN="0-7356-1288-9" Stock="out" Number="7">
<Title>Inside C#</Title>
<Summary>C# Language Programming</Summary>
</Book>
<Book ISBN="0-7356-1377-X" Stock="in" Number="5">
<Title>Introducing Microsoft .NET</Title>
<Summary>Overview of .NET Technology</Summary>
</Book>
<Book ISBN="0-7356-1448-2" Stock="out" Number="4">
<Title>Microsoft C# Language Specifications</Title>
<Summary>The C# language definition</Summary>
</Book>
</Books>
<CDs>
<CD Stock="in" Number="3">
<Title>Classical Collection</Title>
<Summary>Classical Music</Summary>
</CD>
<CD Stock="out" Number="9">
<Title>Jazz Collection</Title>
<Summary>Jazz Music</Summary>
</CD>
</CDs>
</Inventory>
</x:XData>
</XmlDataProvider>
<Style x:Key="AnimatedListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="Margin" Value="0,2,0,2" />
<Setter Property="Padding" Value="0,2,0,2" />
<Style.Triggers>
<DataTrigger
Binding="{Binding XPath=@Stock}"
Value="out">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
From="0.25" To="0.5" Duration="0:0:1"
RepeatBehavior="Forever"
AutoReverse="True"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard>
<Storyboard FillBehavior="Stop">
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
To="1" Duration="0:0:1" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Page.Resources>
<StackPanel>
<ListBox HorizontalAlignment="Center"
ItemContainerStyle="{StaticResource AnimatedListBoxItemStyle}"
Padding="2">
<ListBox.ItemsSource>
<Binding Source="{StaticResource InventoryData}"
XPath="*"/>
</ListBox.ItemsSource>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock FontSize="12" Margin="0,0,10,0">
<TextBlock.Text>
<Binding XPath="Title"/>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</Page>
注解
Style, ControlTemplate并且 DataTemplate 都具有触发器集合。 A DataTrigger 允许在数据对象的属性值与指定的 Value属性值匹配时设置属性值。 例如,如果要显示对象列表 Employee
,则可能希望前景颜色根据每个 Employee's
当前出席情况而有所不同。 (例如, Employees
当前休假的人员显示为紫色的前景。) 在某些情况下,创建转换器或使用转换器 DataTemplateSelector可能更合适。 有关详细信息,请参阅 数据模板化概述。
请注意,必须为数据触发器指定 Binding 属性和 Value 属性 DataTrigger 才能有意义。 如果未指定一个或两个属性,则会引发异常。
对象的 Setters 属性 DataTrigger 只能包含 Setter 对象。 向 Setter 对象添加子级 DataTrigger 会隐式将其添加到 SetterBaseCollection 对象中 DataTrigger 。 EventSetter 不支持对象;仅 Style.Setters 支持 EventSetter 对象。
构造函数
DataTrigger() |
初始化 DataTrigger 类的新实例。 |
属性
Binding |
获取或设置产生数据对象的属性值的绑定。 |
DependencyObjectType |
获取包装 DependencyObjectType 此实例的 CLR 类型。 (继承自 DependencyObject) |
Dispatcher |
获取与此 Dispatcher 关联的 DispatcherObject。 (继承自 DispatcherObject) |
EnterActions |
获取要在触发器对象变为活动状态时应用的 TriggerAction 对象的集合。 此属性不适用于 EventTrigger 类。 (继承自 TriggerBase) |
ExitActions |
获取要在触发器对象变为非活动状态时应用的 TriggerAction 对象的集合。 此属性不适用于 EventTrigger 类。 (继承自 TriggerBase) |
IsSealed |
获取一个值,该值指示此实例当前是否为密封的(只读)。 (继承自 DependencyObject) |
Setters |
获取 Setter 对象的集合,这些对象描述当数据项满足指定条件时要应用的属性值。 |
Value |
获取或设置要与数据对象的属性值比较的值。 |
方法
显式接口实现
IAddChild.AddChild(Object) |
添加子对象。 |
IAddChild.AddText(String) |
将节点的文本内容添加到对象。 |