DataTrigger Klasse

Definition

Stellt einen Trigger dar, der Eigenschaftswerte anwendet oder Aktionen ausführt, wenn die gebundenen Daten eine angegebene Bedingung erfüllen.

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
Vererbung
Attribute
Implementiert

Beispiele

Im folgenden Beispiel ist dies ItemsSource ListBox an Orte gebunden, eine ObservableCollection<T> von Place-Objekten. Place-Objekte weisen eigenschaften Name und Status auf.

Jedes ListBoxItem der ListBox Objekte zeigt ein Place-Objekt an. Das Style beispiel wird auf jede ListBoxItemangewendet.

Dies DataTrigger wird so angegeben, dass der Status des Ortsdatenelements "WA" ist, dann wird der Vordergrund des entsprechenden ListBoxItem Elements auf Rot festgelegt.

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

Im folgenden Beispiel wird gezeigt, wie eine DataTriggerBeginStoryboard Aktion und Storyboard eine Eigenschaft animiert werden, wenn gebundene Daten eine angegebene Bedingung erfüllen. Im Beispiel werden Bestandsinformationen in einem ListBox Steuerelement angezeigt. Es verwendet eine DataTrigger Animierung allerListBoxItem, die Opacity ein Out-of-Stock-Buch enthält.

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

Hinweise

Style, ControlTemplateund DataTemplate alle haben eine Triggersammlung. A DataTrigger ermöglicht es Ihnen, Eigenschaftswerte festzulegen, wenn der Eigenschaftswert des Datenobjekts einem angegebenen Valueentspricht. Wenn Sie z. B. eine Liste von Employee Objekten anzeigen, können Sie möchten, dass die Vordergrundfarbe je nach Employee's aktueller Anwesenheit unterschiedlich sein soll. (Beispielsweise, wer derzeit im Urlaub ist, Employees wird mit einem violetten Vordergrund angezeigt.) In einigen Szenarien ist es möglicherweise besser geeignet, einen Konverter zu erstellen oder einen DataTemplateSelector. Weitere Informationen finden Sie in der Übersicht über die Daten templating.

Beachten Sie, dass Sie sowohl die Eigenschaften als Value auch die Binding Eigenschaften für DataTrigger einen Datenauslöser angeben müssen, um sinnvoll zu sein. Wenn eine oder beide Eigenschaften nicht angegeben werden, wird eine Ausnahme ausgelöst.

Die Setters Eigenschaft eines DataTrigger Objekts kann nur aus Objekten bestehen Setter . Das Hinzufügen eines Setter untergeordneten Objekts zu einem DataTrigger Objekt fügt es implizit dem SetterBaseCollection Objekt DataTrigger hinzu. EventSetterObjekte werden nicht unterstützt; unterstützt EventSetter nur Style.Setters Objekte.

Konstruktoren

DataTrigger()

Initialisiert eine neue Instanz der DataTrigger-Klasse.

Eigenschaften

Binding

Ruft die Bindung ab, die den Eigenschaftswert für das Datenobjekt erzeugt, bzw. legt diese fest.

DependencyObjectType

Ruft den DependencyObjectType CLR-Typ dieser Instanz ab.

(Geerbt von DependencyObject)
Dispatcher

Ruft den Dispatcher ab, der diesem DispatcherObject zugeordnet ist.

(Geerbt von DispatcherObject)
EnterActions

Ruft eine Auflistung von TriggerAction-Objekten ab, die angewendet werden sollen, wenn das Triggerobjekt aktiviert wird. Diese Eigenschaft gilt nicht für die EventTrigger-Klasse.

(Geerbt von TriggerBase)
ExitActions

Ruft eine Auflistung von TriggerAction-Objekten ab, die angewendet werden sollen, wenn das Triggerobjekt deaktiviert wird. Diese Eigenschaft gilt nicht für die EventTrigger-Klasse.

(Geerbt von TriggerBase)
IsSealed

Ruft einen Wert ab, der angibt, ob diese Instanz derzeit versiegelt (schreibgeschützt) ist.

(Geerbt von DependencyObject)
Setters

Ruft eine Auflistung von Setter-Objekten ab, die die Eigenschaftswerte beschreiben, die angewendet werden sollen, wenn das Datenelement die angegebene Bedingung erfüllt.

Value

Ruft den Wert ab, mit dem der Eigenschaftswert des Datenobjekts verglichen wird, bzw. legt diesen fest.

Methoden

CheckAccess()

Bestimmt, ob der aufrufende Thread auf dieses DispatcherObject zugreifen kann.

(Geerbt von DispatcherObject)
ClearValue(DependencyProperty)

Löscht den lokalen Wert einer Eigenschaft. Die Eigenschaft, deren Wert gelöscht werden soll, wird durch einen DependencyProperty-Bezeichner angegeben.

(Geerbt von DependencyObject)
ClearValue(DependencyPropertyKey)

Löscht den lokalen Wert einer schreibgeschützten Eigenschaft. Die Eigenschaft, deren Wert gelöscht werden soll, wird durch einen DependencyPropertyKey angegeben.

(Geerbt von DependencyObject)
CoerceValue(DependencyProperty)

Erzwingt den Wert der angegebenen Abhängigkeitseigenschaft. Dies erfolgt durch den Aufruf einer beliebigen CoerceValueCallback-Funktion, die in den Metadaten für die Abhängigkeitseigenschaft angegeben ist, während sie beim aufrufenden DependencyObject beendet wird.

(Geerbt von DependencyObject)
Equals(Object)

Bestimmt, ob ein angegebenes DependencyObject dem aktuellen DependencyObject entspricht.

(Geerbt von DependencyObject)
GetHashCode()

Ruft einen Hashcode für diese DependencyObject ab.

(Geerbt von DependencyObject)
GetLocalValueEnumerator()

Erstellt einen spezialisierten Enumerator, mit dem bestimmt wird, welche Abhängigkeitseigenschaften dieses DependencyObject über lokal festgelegte Werte verfügen.

(Geerbt von DependencyObject)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
GetValue(DependencyProperty)

Gibt den aktuellen effektiven Wert einer Abhängigkeitseigenschaft für diese Instanz eines DependencyObject zurück.

(Geerbt von DependencyObject)
InvalidateProperty(DependencyProperty)

Wertet den effektiven Wert für die angegebene Abhängigkeitseigenschaft erneut aus.

(Geerbt von DependencyObject)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Wird immer dann aufgerufen, wenn der effektive Wert einer Abhängigkeitseigenschaft für dieses DependencyObject aktualisiert wurde. Welche spezifische Abhängigkeitseigenschaft geändert wird, wird in den Ereignisdaten gemeldet.

(Geerbt von DependencyObject)
ReadLocalValue(DependencyProperty)

Gibt den lokalen Wert einer Abhängigkeitseigenschaft zurück, wenn dieser vorhanden ist.

(Geerbt von DependencyObject)
ReceiveMarkupExtension(Object, XamlSetMarkupExtensionEventArgs)

Behandelt Fälle, in denen eine Markuperweiterung einen Wert für die Eigenschaft eines DataTrigger-Objekts bereitstellt.

SetCurrentValue(DependencyProperty, Object)

Legt den Wert einer Abhängigkeitseigenschaft fest, ohne deren Wertquelle zu ändern.

(Geerbt von DependencyObject)
SetValue(DependencyProperty, Object)

Legt den lokalen Wert einer Abhängigkeitseigenschaft fest, die durch ihren Bezeichner angegeben ist.

(Geerbt von DependencyObject)
SetValue(DependencyPropertyKey, Object)

Legt den lokalen Wert einer schreibgeschützten Abhängigkeitseigenschaft fest, die durch den DependencyPropertyKey-Bezeichner der Abhängigkeitseigenschaft angegeben ist.

(Geerbt von DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Gibt einen Wert zurück, der angibt, ob Serialisierungsprozesse den Wert der bereitgestellten Abhängigkeitseigenschaft serialisieren sollen.

(Geerbt von DependencyObject)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
VerifyAccess()

Erzwingt, dass der aufrufende Thread auf dieses DispatcherObject zugreifen kann.

(Geerbt von DispatcherObject)

Explizite Schnittstellenimplementierungen

IAddChild.AddChild(Object)

Fügt ein untergeordnetes Objekt hinzu.

IAddChild.AddText(String)

Fügt dem Objekt den Textinhalt eines Knotens hinzu.

Gilt für

Siehe auch