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 개체인 ListBox PlacesObservableCollection<T>에 바인딩됩니다. Place 개체에는 Name 및 State 속성이 있습니다.
각 ListBoxItem 개체는 ListBox Place 개체를 표시합니다. 합니다 Style 예제에서는 각각에 적용 됩니다 ListBoxItem합니다.
DataTrigger Place 데이터 항목의 상태가 "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 인벤토리 정보를 표시합니다. 이 함수는 DataTrigger 재고가 없는 책을 포함하는 모든 ListBoxItem 책에 애니메이션 Opacity 효과를 주는 데 사용됩니다.
<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 의 속성을 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) |
노드의 텍스트 콘텐츠를 개체에 추가합니다. |