DataTrigger Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 die ItemsSource Gebundene an ListBoxOrte, eine ObservableCollection<T> von Place-Objekten . Place-Objekte weisen den Eigenschaften Name und State auf.
Jedes ListBoxItem der ListBox Objekte zeigt ein Place-Objekt an. Das Style im Beispiel wird auf die einzelnen ListBoxItem.
Es DataTrigger wird so angegeben, dass der Vordergrund des entsprechenden ListBoxItem Elements auf "Rot" festgelegt ist, wenn der Status des Ort-Datenelements "WA" ist.
<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>
Das folgende Beispiel zeigt, wie Sie eine DataTrigger, eine BeginStoryboard Aktion und eine Storyboard Eigenschaft animieren, wenn gebundene Daten eine angegebene Bedingung erfüllen. Im Beispiel werden Bestandsinformationen in einem ListBox Steuerelement angezeigt. Es verwendet eine DataTrigger , um das Opacity von jedem ListBoxItem zu animieren, das ein veraltetes 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 verfügen über eine Triggerauflistung. A DataTrigger ermöglicht es Ihnen, Eigenschaftswerte festzulegen, wenn der Eigenschaftswert des Datenobjekts einem angegebenen Valueentspricht. Wenn Sie beispielsweise eine Liste von Employee Objekten anzeigen, möchten Sie, dass die Vordergrundfarbe je nach Employee's aktueller Anwesenheit unterschiedlich sein soll. (Beispielsweise, Employees wer gerade im Urlaub ist, 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 eines DataTrigger Datentriggers angeben müssen, damit sie aussagekräftig sind. Wenn eine oder beide Eigenschaften nicht angegeben sind, wird eine Ausnahme ausgelöst.
Die Setters Eigenschaft eines DataTrigger Objekts kann nur aus Objekten bestehen Setter . Das Hinzufügen eines Setter untergeordneten Elements zu einem DataTrigger Objekt fügt es implizit dem SetterBaseCollection Objekt für das DataTrigger Objekt hinzu. EventSetterObjekte werden nicht unterstützt; unterstützt EventSetter nur Style.Setters Objekte.
Konstruktoren
| Name | Beschreibung |
|---|---|
| DataTrigger() |
Initialisiert eine neue Instanz der DataTrigger-Klasse. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Binding |
Dient zum Abrufen oder Festlegen der Bindung, die den Eigenschaftswert des Datenobjekts erzeugt. |
| DependencyObjectType |
Ruft den DependencyObjectType CLR-Typ dieser Instanz ab. (Geerbt von DependencyObject) |
| Dispatcher |
Ruft dies Dispatcher ab, dem dies DispatcherObject zugeordnet ist. (Geerbt von DispatcherObject) |
| EnterActions |
Ruft eine Auflistung von TriggerAction Objekten ab, die angewendet werden sollen, wenn das Triggerobjekt aktiv 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 inaktiv wird. Diese Eigenschaft gilt nicht für die EventTrigger Klasse. (Geerbt von TriggerBase) |
| IsSealed |
Ruft einen Wert ab, der angibt, ob diese Instanz aktuell versiegelt ist (schreibgeschützt). (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 |
Dient zum Abrufen oder Festlegen des Werts, der mit dem Eigenschaftswert des Datenobjekts verglichen werden soll. |
Methoden
| Name | Beschreibung |
|---|---|
| CheckAccess() |
Bestimmt, ob der aufrufende Thread Zugriff auf diesen DispatcherObjectThread hat. (Geerbt von DispatcherObject) |
| ClearValue(DependencyProperty) |
Löscht den lokalen Wert einer Eigenschaft. Die zu löschende Eigenschaft wird durch einen DependencyProperty Bezeichner angegeben. (Geerbt von DependencyObject) |
| ClearValue(DependencyPropertyKey) |
Löscht den lokalen Wert einer schreibgeschützten Eigenschaft. Die zu löschende Eigenschaft wird durch eine DependencyPropertyKey. (Geerbt von DependencyObject) |
| CoerceValue(DependencyProperty) |
Wandelt den Wert der angegebenen Abhängigkeitseigenschaft um. Dies wird erreicht, indem alle CoerceValueCallback in Eigenschaftsmetadaten für die Abhängigkeitseigenschaft angegebenen Funktionen aufgerufen werden, wie sie für den Aufruf DependencyObjectvorhanden sind. (Geerbt von DependencyObject) |
| Equals(Object) |
Bestimmt, ob ein bereitgestelltes DependencyObject Element dem aktuellen DependencyObjectentspricht. (Geerbt von DependencyObject) |
| GetHashCode() |
Ruft einen Hashcode für diese DependencyObjectab. (Geerbt von DependencyObject) |
| GetLocalValueEnumerator() |
Erstellt einen speziellen Enumerator, um zu bestimmen, welche Abhängigkeitseigenschaften lokal festgelegte Werte für diese DependencyObjectEigenschaft haben. (Geerbt von DependencyObject) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| GetValue(DependencyProperty) |
Gibt den aktuellen effektiven Wert einer Abhängigkeitseigenschaft für diese Instanz einer .DependencyObject (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 der aktuellen Object. (Geerbt von Object) |
| OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Wird immer aufgerufen, wenn der effektive Wert einer Abhängigkeitseigenschaft für diese DependencyObject Eigenschaft aktualisiert wurde. Die spezifische Abhängigkeitseigenschaft, die geändert wurde, wird in den Ereignisdaten gemeldet. (Geerbt von DependencyObject) |
| ReadLocalValue(DependencyProperty) |
Gibt den lokalen Wert einer Abhängigkeitseigenschaft zurück, sofern vorhanden. (Geerbt von DependencyObject) |
| ReceiveMarkupExtension(Object, XamlSetMarkupExtensionEventArgs) |
Behandelt Fälle, in denen eine Markuperweiterung einen Wert für eine Eigenschaft eines DataTrigger Objekts bereitstellt. |
| SetCurrentValue(DependencyProperty, Object) |
Legt den Wert einer Abhängigkeitseigenschaft fest, ohne die Wertquelle zu ändern. (Geerbt von DependencyObject) |
| SetValue(DependencyProperty, Object) |
Legt den lokalen Wert einer Abhängigkeitseigenschaft fest, die durch den Bezeichner der Abhängigkeitseigenschaft angegeben wird. (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 wird. (Geerbt von DependencyObject) |
| ShouldSerializeProperty(DependencyProperty) |
Gibt einen Wert zurück, der angibt, ob Serialisierungsprozesse den Wert für die bereitgestellte 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 Zugriff auf diesen DispatcherObjectThread hat. (Geerbt von DispatcherObject) |
Explizite Schnittstellenimplementierungen
| Name | Beschreibung |
|---|---|
| IAddChild.AddChild(Object) |
Fügt ein untergeordnetes Objekt hinzu. |
| IAddChild.AddText(String) |
Fügt dem Objekt den Textinhalt eines Knotens hinzu. |