다음을 통해 공유


DataTrigger 클래스

정의

바인딩된 데이터가 지정된 조건을 충족할 때 속성 값을 적용하거나 작업을 수행하는 트리거를 나타냅니다.

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, ControlTemplateDataTemplate 모두 트리거 컬렉션이 있습니다. 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
CheckAccess()

호출 스레드에 이 DispatcherObject액세스 권한이 있는지 여부를 확인합니다.

(다음에서 상속됨 DispatcherObject)
ClearValue(DependencyProperty)

속성의 로컬 값을 지웁니다. 지울 속성은 식별자에 의해 DependencyProperty 지정됩니다.

(다음에서 상속됨 DependencyObject)
ClearValue(DependencyPropertyKey)

읽기 전용 속성의 로컬 값을 지웁니다. 지울 속성은 .에 DependencyPropertyKey의해 지정됩니다.

(다음에서 상속됨 DependencyObject)
CoerceValue(DependencyProperty)

지정된 종속성 속성의 값을 강제 변환합니다. 이 작업은 호출 CoerceValueCallback시 종속성 속성에 대한 속성 메타데이터에 지정된 함수 DependencyObject 를 호출하여 수행됩니다.

(다음에서 상속됨 DependencyObject)
Equals(Object)

제공된 DependencyObject 항목이 현재 DependencyObject와 같은지 여부를 확인합니다.

(다음에서 상속됨 DependencyObject)
GetHashCode()

이에 DependencyObject대한 해시 코드를 가져옵니다.

(다음에서 상속됨 DependencyObject)
GetLocalValueEnumerator()

DependencyObject속성에 대한 값을 로컬로 설정한 종속성 속성을 결정하기 위한 특수 열거자를 만듭니다.

(다음에서 상속됨 DependencyObject)
GetType()

현재 인스턴스의 Type 가져옵니다.

(다음에서 상속됨 Object)
GetValue(DependencyProperty)

이 인스턴스 DependencyObject에 대한 종속성 속성의 현재 유효 값을 반환합니다.

(다음에서 상속됨 DependencyObject)
InvalidateProperty(DependencyProperty)

지정된 종속성 속성의 유효 값을 다시 평가합니다.

(다음에서 상속됨 DependencyObject)
MemberwiseClone()

현재 Object단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

이에 대한 종속성 속성의 유효 값이 DependencyObject 업데이트될 때마다 호출됩니다. 변경된 특정 종속성 속성은 이벤트 데이터에 보고됩니다.

(다음에서 상속됨 DependencyObject)
ReadLocalValue(DependencyProperty)

종속성 속성의 로컬 값(있는 경우)을 반환합니다.

(다음에서 상속됨 DependencyObject)
ReceiveMarkupExtension(Object, XamlSetMarkupExtensionEventArgs)

태그 확장이 개체의 속성에 대한 값을 제공하는 경우를 DataTrigger 처리합니다.

SetCurrentValue(DependencyProperty, Object)

해당 값 원본을 변경하지 않고 종속성 속성의 값을 설정합니다.

(다음에서 상속됨 DependencyObject)
SetValue(DependencyProperty, Object)

종속성 속성 식별자에 의해 지정된 종속성 속성의 로컬 값을 설정합니다.

(다음에서 상속됨 DependencyObject)
SetValue(DependencyPropertyKey, Object)

종속성 속성의 식별자에 의해 DependencyPropertyKey 지정된 읽기 전용 종속성 속성의 로컬 값을 설정합니다.

(다음에서 상속됨 DependencyObject)
ShouldSerializeProperty(DependencyProperty)

serialization 프로세스가 제공된 종속성 속성의 값을 serialize해야 하는지 여부를 나타내는 값을 반환합니다.

(다음에서 상속됨 DependencyObject)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)
VerifyAccess()

호출 스레드가 이에 DispatcherObject액세스할 수 있도록 합니다.

(다음에서 상속됨 DispatcherObject)

명시적 인터페이스 구현

Name Description
IAddChild.AddChild(Object)

자식 개체를 추가합니다.

IAddChild.AddText(String)

개체에 노드의 텍스트 내용을 추가합니다.

적용 대상

추가 정보