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 에서는 Place 개체의ListBoxPlacesObservableCollection<T>에 바인딩됩니다. Place 개체에는 Name 및 State 속성이 있습니다.
각 ListBoxItem 개체는 ListBoxPlace 개체를 표시합니다. 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>
다음 예제에서는 바인딩된 데이터가 지정된 조건을 충족할 때 속성에 애니메이션 효과를 주도록 , 작업 및 Storyboard 속성을 사용하는 DataTriggerBeginStoryboard 방법을 보여 줍니다. 이 예제에서는 컨트롤에 인벤토리 정보를 표시합니다 ListBox . 품절 책을 포함하는 모든 ListBoxItem 책에 애니메이션 Opacity 효과를 주는 데 사용됩니다DataTrigger.
<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 모두 지정해야 의미 있습니다. 속성 중 하나 또는 둘 다를 지정하지 않으면 예외가 throw됩니다.
개체의 속성은 Setters 개체로만 구성됩니다Setter.DataTrigger 개체에 Setter 자식 추가는 DataTrigger 개체에 대한 DataTrigger 자식 개체에 SetterBaseCollection 암시적으로 추가합니다. EventSetter 개체는 지원되지 않습니다. 만 Style.Setters 개체를 지원합니다 EventSetter .
생성자
| Name | Description |
|---|---|
| DataTrigger() |
DataTrigger 클래스의 새 인스턴스를 초기화합니다. |
속성
| Name | Description |
|---|---|
| Binding |
데이터 개체의 속성 값을 생성하는 바인딩을 가져오거나 설정합니다. |
| DependencyObjectType |
이 인스턴스의 DependencyObjectType CLR 형식을 래핑하는 값을 가져옵니다. (다음에서 상속됨 DependencyObject) |
| Dispatcher |
연결된 이 값을 DispatcherDispatcherObject 가져옵니다. (다음에서 상속됨 DispatcherObject) |
| EnterActions |
트리거 개체가 활성화될 때 적용할 개체의 TriggerAction 컬렉션을 가져옵니다. 이 속성은 클래스에 EventTrigger 적용되지 않습니다. (다음에서 상속됨 TriggerBase) |
| ExitActions |
트리거 개체가 비활성 상태가 될 때 적용할 개체의 컬렉션을 TriggerAction 가져옵니다. 이 속성은 클래스에 EventTrigger 적용되지 않습니다. (다음에서 상속됨 TriggerBase) |
| IsSealed |
이 인스턴스가 현재 봉인되어 있는지 여부를 나타내는 값을 가져옵니다(읽기 전용). (다음에서 상속됨 DependencyObject) |
| Setters |
데이터 항목이 지정된 조건을 충족할 때 적용할 속성 값을 설명하는 개체 컬렉션을 Setter 가져옵니다. |
| Value |
데이터 개체의 속성 값과 비교할 값을 가져오거나 설정합니다. |
메서드
명시적 인터페이스 구현
| Name | Description |
|---|---|
| IAddChild.AddChild(Object) |
자식 개체를 추가합니다. |
| IAddChild.AddText(String) |
개체에 노드의 텍스트 내용을 추가합니다. |