DataTrigger 클래스

정의

바인딩된 데이터가 지정된 조건에 맞을 때 속성 값을 적용하거나 작업을 수행하는 트리거를 나타냅니다.Represents a trigger that applies property values or performs actions when the bound data meets a specified condition.

public ref 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
type DataTrigger = class
    inherit TriggerBase
    interface IAddChild
Public Class DataTrigger
Inherits TriggerBase
Implements IAddChild
상속
특성
구현

예제

다음 예제에서는 ItemsSourceListBox 바인딩되 위치, ObservableCollection<T>위치 개체입니다.In the following example, the ItemsSource of the ListBox is bound to Places, an ObservableCollection<T> of Place objects. 장소 개체 속성을 가질 이름 하 고 상태합니다.Place objects have properties Name and State.

ListBoxItem 의 합니다 ListBox 표시는 개체입니다.Each ListBoxItem of the ListBox displays a Place object. 합니다 Style 예제에서는 각각에 적용 됩니다 ListBoxItem합니다.The Style in the example is applied to each ListBoxItem.

DataTrigger 지정 되도록 경우는 상태 데이터 항목 "WA" 인 해당 전경 ListBoxItem 빨간색으로 설정 됩니다.The DataTrigger is specified such that if the State of the Place data item is "WA" then the foreground of the corresponding ListBoxItem is set to Red.

<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>

다음 예제에서는 사용 하는 방법을 보여 줍니다는 DataTrigger, BeginStoryboard 동작 및 Storyboard 바인딩된 데이터가 지정된 된 조건을 충족 하는 경우에 속성에 애니메이션 효과입니다.The following example shows how to use a DataTrigger, a BeginStoryboard action, and a Storyboard to animate a property when bound data meets a specified condition. 에 대 한 인벤토리 정보를 표시 하는 예제는 ListBox 제어 합니다.The example displays inventory information in a ListBox control. 사용 하 여를 DataTrigger 애니메이션 효과를 주는 합니다 Opacity 의 모든 ListBoxItem 아웃 품절 책을 포함 하는 합니다.It uses a DataTrigger to animate the Opacity of every ListBoxItem that contains an out-of-stock book.

<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>

설명

StyleControlTemplate, 및 DataTemplate 는 triggers 컬렉션이 있는 모든.Style, ControlTemplate, and DataTemplate all have a triggers collection. A DataTrigger 데이터 개체의 속성 값을 지정 된 일치 하는 경우 속성 값을 설정할 수 있습니다 Value합니다.A DataTrigger allows you to set property values when the property value of the data object matches a specified Value. 예를 들어의 목록을 표시 하는 경우 Employee 개체에 따라 다를 수 전경색 수도 Employee's 현재 참석 합니다.For example, if you are displaying a list of Employee objects, you may want the foreground color to be different based on each Employee's current attendance. (예를 들어 Employees 휴가 현재 인 자주색 포그라운드 표시 됩니다.) 일부 시나리오에서는 변환기를 만들거나 사용 하 여 더 적합할 수 있습니다는 DataTemplateSelector합니다.(For example, Employees who are currently on vacation are displayed with a purple foreground.) In some scenarios it may be more suitable to create a converter or to use a DataTemplateSelector. 자세한 내용은 참조는 데이터 템플릿 개요합니다.For more information, see the Data Templating Overview.

모두 지정 해야 합니다 BindingValue 속성에는 DataTrigger 의미 있는 데이터 트리거에 대 한.Note that you must specify both the Binding and Value properties on a DataTrigger for the data trigger to be meaningful. 하나 또는 두 속성 모두 지정 하지 않으면 예외가 throw 됩니다.If one or both of the properties are not specified, an exception is thrown.

Setters 의 속성을 DataTrigger 개체 수만 구성 Setter 개체입니다.The Setters property of a DataTrigger object can only consist of Setter objects. 추가 Setter 자식을 DataTrigger 개체가 암시적으로 추가 합니다 SetterBaseCollection 에 대 한를 DataTrigger 개체입니다.Adding a Setter child to a DataTrigger object implicitly adds it to the SetterBaseCollection for the DataTrigger object. EventSetter 개체가 지원 되지 않습니다. 만 Style.Setters 지원 EventSetter 개체입니다.EventSetter objects are not supported; only Style.Setters supports EventSetter objects.

생성자

DataTrigger()

DataTrigger 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the DataTrigger class.

속성

Binding

데이터 개체의 속성 값을 생성하는 바인딩을 가져오거나 설정합니다.Gets or sets the binding that produces the property value of the data object.

DependencyObjectType

이 인스턴스의 CLRCLR 형식을 래핑하는 DependencyObjectType을 가져옵니다.Gets the DependencyObjectType that wraps the CLRCLR type of this instance.

(다음에서 상속됨 DependencyObject)
Dispatcher

Dispatcher와 연결된 DispatcherObject를 가져옵니다.Gets the Dispatcher this DispatcherObject is associated with.

(다음에서 상속됨 DispatcherObject)
EnterActions

트리거 개체가 활성화될 때 적용할 TriggerAction 개체의 컬렉션을 가져옵니다.Gets a collection of TriggerAction objects to apply when the trigger object becomes active. 이 속성은 EventTrigger 클래스에 적용되지 않습니다.This property does not apply to the EventTrigger class.

(다음에서 상속됨 TriggerBase)
ExitActions

트리거 개체가 비활성화될 때 적용할 TriggerAction 개체의 컬렉션을 가져옵니다.Gets a collection of TriggerAction objects to apply when the trigger object becomes inactive. 이 속성은 EventTrigger 클래스에 적용되지 않습니다.This property does not apply to the EventTrigger class.

(다음에서 상속됨 TriggerBase)
IsSealed

이 인스턴스가 현재 봉인되어 있는지(읽기 전용인지) 여부를 나타내는 값을 가져옵니다.Gets a value that indicates whether this instance is currently sealed (read-only).

(다음에서 상속됨 DependencyObject)
Setters

데이터 항목이 지정된 조건을 충족할 때 적용할 속성 값을 설명하는 Setter 개체의 컬렉션을 가져옵니다.Gets a collection of Setter objects, which describe the property values to apply when the data item meets the specified condition.

Value

데이터 개체의 속성 값과 비교할 값을 가져오거나 설정합니다.Gets or sets the value to be compared with the property value of the data object.

메서드

CheckAccess()

호출 스레드가 이 DispatcherObject에 액세스할 수 있는지 여부를 확인합니다.Determines whether the calling thread has access to this DispatcherObject.

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

속성의 로컬 값을 지웁니다.Clears the local value of a property. 지울 속성이 DependencyProperty 식별자에서 지정됩니다.The property to be cleared is specified by a DependencyProperty identifier.

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

읽기 전용 속성의 로컬 값을 지웁니다.Clears the local value of a read-only property. 선언할 속성이 DependencyPropertyKey에서 지정됩니다.The property to be cleared is specified by a DependencyPropertyKey.

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

지정된 종속성 속성의 값을 강제 변환합니다.Coerces the value of the specified dependency property. 호출하는 DependencyObject에 있으므로 이 작업은 종속성 속성의 속성 메타데이터에 지정된 CoerceValueCallback 함수를 호출하여 수행합니다.This is accomplished by invoking any CoerceValueCallback function specified in property metadata for the dependency property as it exists on the calling DependencyObject.

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

제공된 DependencyObject가 현재 DependencyObject에 해당하는지 여부를 확인합니다.Determines whether a provided DependencyObject is equivalent to the current DependencyObject.

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

DependencyObject의 해시 코드를 가져옵니다.Gets a hash code for this DependencyObject.

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

DependencyObject에 대해 로컬로 값을 설정한 종속성 속성을 확인하기 위한 특수 열거자를 만듭니다.Creates a specialized enumerator for determining which dependency properties have locally set values on this DependencyObject.

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

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

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

DependencyObject의 인스턴스에서 종속성 속성의 현재 유효 값을 반환합니다.Returns the current effective value of a dependency property on this instance of a DependencyObject.

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

지정된 종속성 속성의 유효 값을 다시 계산합니다.Re-evaluates the effective value for the specified dependency property.

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

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

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

DependencyObject에서 종속성 속성의 유효 값이 업데이트될 때마다 호출됩니다.Invoked whenever the effective value of any dependency property on this DependencyObject has been updated. 변경된 특정 종속성 속성은 이벤트 데이터에서 보고됩니다.The specific dependency property that changed is reported in the event data.

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

종속성 속성의 로컬 값을 반환합니다(있는 경우).Returns the local value of a dependency property, if it exists.

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

태그 확장이 DataTrigger 개체의 속성 값을 제공하는 경우를 처리합니다.Handles cases where a markup extension provides a value for a property of a DataTrigger object.

SetCurrentValue(DependencyProperty, Object)

해당 값 소스를 변경하지 않고 종속성 속성의 값을 설정합니다.Sets the value of a dependency property without changing its value source.

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

지정된 종속성 속성 식별자를 가진 종속성 속성의 로컬 값을 설정합니다.Sets the local value of a dependency property, specified by its dependency property identifier.

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

종속성 속성의 DependencyPropertyKey 식별자에 의해 지정된 읽기 전용 종속성 속성의 로컬 값을 설정합니다.Sets the local value of a read-only dependency property, specified by the DependencyPropertyKey identifier of the dependency property.

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

serialization 프로세스에서 지정된 종속성 속성의 값을 직렬화해야 하는지 여부를 나타내는 값을 반환합니다.Returns a value that indicates whether serialization processes should serialize the value for the provided dependency property.

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

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

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

호출 스레드에서 이 DispatcherObject에 액세스할 수 있는지 확인합니다.Enforces that the calling thread has access to this DispatcherObject.

(다음에서 상속됨 DispatcherObject)

명시적 인터페이스 구현

IAddChild.AddChild(Object)

자식 개체를 추가합니다.Adds a child object.

IAddChild.AddText(String)

노드의 텍스트 콘텐츠를 개체에 추가합니다.Adds the text content of a node to the object.

적용 대상

추가 정보