DataTrigger Classe

Definizione

Rappresenta un trigger che applica i valori di proprietà o esegue azioni quando i dati associati soddisfano una condizione specificata.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
Ereditarietà
Attributi
Implementazioni

Esempi

Nell'esempio seguente, il ItemsSource del ListBox è associato a posizioni, un ObservableCollection<T> di oggetti Place .In the following example, the ItemsSource of the ListBox is bound to Places, an ObservableCollection<T> of Place objects. Gli oggetti Place hanno il nome e lo statodelle proprietà.Place objects have properties Name and State.

Ogni ListBoxItem della ListBox Visualizza un oggetto posizione .Each ListBoxItem of the ListBox displays a Place object. Il Style nell'esempio viene applicato a ogni ListBoxItem.The Style in the example is applied to each ListBoxItem.

Il DataTrigger viene specificato in modo che, se lo stato dell'elemento dati posto è "WA", il primo piano dell'ListBoxItem corrispondente viene impostato su rosso.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>

Nell'esempio seguente viene illustrato come utilizzare un DataTrigger, un'azione BeginStoryboard e un Storyboard per animare una proprietà quando i dati associati soddisfano una condizione specificata.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. Nell'esempio vengono visualizzate le informazioni di inventario in un controllo ListBox.The example displays inventory information in a ListBox control. Usa un DataTrigger per animare il Opacity di ogni ListBoxItem che contiene un libro di esaurimento delle scorte.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>

Commenti

Style, ControlTemplatee DataTemplate dispongono tutti di una raccolta Triggers.Style, ControlTemplate, and DataTemplate all have a triggers collection. Un DataTrigger consente di impostare i valori delle proprietà quando il valore della proprietà dell'oggetto dati corrisponde a una Valuespecificata.A DataTrigger allows you to set property values when the property value of the data object matches a specified Value. Se, ad esempio, si visualizza un elenco di oggetti Employee, è possibile che il colore di primo piano sia diverso in base a ogni Employee's presenza corrente.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. Ad esempio, i Employees attualmente in vacanza vengono visualizzati con un primo piano viola. In alcuni scenari può essere più appropriato creare un convertitore o usare un 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. Per altre informazioni, vedere Cenni preliminari sui modelli di dati.For more information, see the Data Templating Overview.

Si noti che è necessario specificare le proprietà Binding e Value in un DataTrigger affinché il trigger di dati sia significativo.Note that you must specify both the Binding and Value properties on a DataTrigger for the data trigger to be meaningful. Se una o entrambe le proprietà non vengono specificate, viene generata un'eccezione.If one or both of the properties are not specified, an exception is thrown.

La proprietà Setters di un oggetto DataTrigger può essere costituita solo da oggetti di Setter.The Setters property of a DataTrigger object can only consist of Setter objects. L'aggiunta di un Setter figlio a un oggetto DataTrigger lo aggiunge in modo implicito al SetterBaseCollection per l'oggetto DataTrigger.Adding a Setter child to a DataTrigger object implicitly adds it to the SetterBaseCollection for the DataTrigger object. gli oggetti EventSetter non sono supportati. solo Style.Setters supporta EventSetter oggetti.EventSetter objects are not supported; only Style.Setters supports EventSetter objects.

Costruttori

DataTrigger()

Inizializza una nuova istanza della classe DataTrigger.Initializes a new instance of the DataTrigger class.

Proprietà

Binding

Ottiene o imposta l'associazione che genera il valore della proprietà dell'oggetto dati.Gets or sets the binding that produces the property value of the data object.

DependencyObjectType

Ottiene la classe DependencyObjectType che include il tipo CLRCLR di questa istanza.Gets the DependencyObjectType that wraps the CLRCLR type of this instance.

(Ereditato da DependencyObject)
Dispatcher

Ottiene l'oggetto Dispatcher associato a DispatcherObject.Gets the Dispatcher this DispatcherObject is associated with.

(Ereditato da DispatcherObject)
EnterActions

Ottiene una raccolta di oggetti TriggerAction da applicare quando l'oggetto trigger diventa attivo.Gets a collection of TriggerAction objects to apply when the trigger object becomes active. Questa proprietà non si applica alla classe EventTrigger.This property does not apply to the EventTrigger class.

(Ereditato da TriggerBase)
ExitActions

Ottiene una raccolta di oggetti TriggerAction da applicare quando l'oggetto trigger diventa inattivo.Gets a collection of TriggerAction objects to apply when the trigger object becomes inactive. Questa proprietà non si applica alla classe EventTrigger.This property does not apply to the EventTrigger class.

(Ereditato da TriggerBase)
IsSealed

Ottiene un valore che indica se l'istanza è attualmente sealed (di sola lettura).Gets a value that indicates whether this instance is currently sealed (read-only).

(Ereditato da DependencyObject)
Setters

Ottiene un insieme di oggetti Setter che descrivono i valori della proprietà da applicare quando l'elemento dei dati soddisfa la condizione specificata.Gets a collection of Setter objects, which describe the property values to apply when the data item meets the specified condition.

Value

Recupera o imposta il valore da confrontare con il valore della proprietà dell'oggetto dati.Gets or sets the value to be compared with the property value of the data object.

Metodi

CheckAccess()

Determina se il thread chiamante ha accesso a DispatcherObject.Determines whether the calling thread has access to this DispatcherObject.

(Ereditato da DispatcherObject)
ClearValue(DependencyProperty)

Cancella il valore locale di una proprietà.Clears the local value of a property. La proprietà da cancellare è specificata da un identificatore DependencyProperty.The property to be cleared is specified by a DependencyProperty identifier.

(Ereditato da DependencyObject)
ClearValue(DependencyPropertyKey)

Cancella il valore locale di una proprietà di sola lettura.Clears the local value of a read-only property. La proprietà da cancellare è specificata da un oggetto DependencyPropertyKey.The property to be cleared is specified by a DependencyPropertyKey.

(Ereditato da DependencyObject)
CoerceValue(DependencyProperty)

Assegna forzatamente il valore della proprietà di dipendenza specificata.Coerces the value of the specified dependency property. Questa operazione viene eseguita richiamando qualsiasi funzione CoerceValueCallback specificata nei metadati della proprietà di dipendenza esistente nell'oggetto DependencyObject chiamante.This is accomplished by invoking any CoerceValueCallback function specified in property metadata for the dependency property as it exists on the calling DependencyObject.

(Ereditato da DependencyObject)
Equals(Object)

Determina se l'oggetto DependencyObject specificato equivale all'oggetto DependencyObject corrente.Determines whether a provided DependencyObject is equivalent to the current DependencyObject.

(Ereditato da DependencyObject)
GetHashCode()

Ottiene un codice hash per l'oggetto DependencyObject.Gets a hash code for this DependencyObject.

(Ereditato da DependencyObject)
GetLocalValueEnumerator()

Crea un enumeratore specializzato per determinare le proprietà di dipendenza che presentano valori impostati localmente nell'oggetto DependencyObject.Creates a specialized enumerator for determining which dependency properties have locally set values on this DependencyObject.

(Ereditato da DependencyObject)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
GetValue(DependencyProperty)

Restituisce il valore effettivo corrente di una proprietà di dipendenza in questa istanza di DependencyObject.Returns the current effective value of a dependency property on this instance of a DependencyObject.

(Ereditato da DependencyObject)
InvalidateProperty(DependencyProperty)

Valuta di nuovo il valore effettivo della proprietà di dipendenza specificata.Re-evaluates the effective value for the specified dependency property.

(Ereditato da DependencyObject)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Richiamato ogni volta che viene aggiornato il valore effettivo di qualsiasi proprietà di dipendenza in DependencyObject.Invoked whenever the effective value of any dependency property on this DependencyObject has been updated. La proprietà di dipendenza specifica modificata viene indicata nei dati dell'evento.The specific dependency property that changed is reported in the event data.

(Ereditato da DependencyObject)
ReadLocalValue(DependencyProperty)

Restituisce il valore locale di una proprietà di dipendenza, se presente.Returns the local value of a dependency property, if it exists.

(Ereditato da DependencyObject)
ReceiveMarkupExtension(Object, XamlSetMarkupExtensionEventArgs)

Gestisce casi dove un'estensione di markup fornisce un valore per una proprietà di un oggetto DataTrigger.Handles cases where a markup extension provides a value for a property of a DataTrigger object.

SetCurrentValue(DependencyProperty, Object)

Imposta il valore di una proprietà di dipendenza senza modificare l'origine del valore.Sets the value of a dependency property without changing its value source.

(Ereditato da DependencyObject)
SetValue(DependencyProperty, Object)

Imposta il valore locale di una proprietà di dipendenza, specificato dal relativo identificatore della proprietà di dipendenza.Sets the local value of a dependency property, specified by its dependency property identifier.

(Ereditato da DependencyObject)
SetValue(DependencyPropertyKey, Object)

Imposta il valore locale di una proprietà di dipendenza di sola lettura, specificato dall'identificatore DependencyPropertyKey della proprietà di dipendenza.Sets the local value of a read-only dependency property, specified by the DependencyPropertyKey identifier of the dependency property.

(Ereditato da DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Restituisce un valore che indica se i processi di serializzazione devono serializzare il valore della proprietà di dipendenza specificata.Returns a value that indicates whether serialization processes should serialize the value for the provided dependency property.

(Ereditato da DependencyObject)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)
VerifyAccess()

Impone che il thread chiamante abbia accesso a DispatcherObject.Enforces that the calling thread has access to this DispatcherObject.

(Ereditato da DispatcherObject)

Implementazioni dell'interfaccia esplicita

IAddChild.AddChild(Object)

Aggiunge un oggetto figlio.Adds a child object.

IAddChild.AddText(String)

Aggiunge il contenuto di testo di un nodo all'oggetto.Adds the text content of a node to the object.

Si applica a

Vedi anche