DataTrigger Klas

Definitie

Vertegenwoordigt een trigger die eigenschapswaarden toepast of acties uitvoert wanneer de afhankelijke gegevens voldoen aan een opgegeven voorwaarde.

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
Overname
Kenmerken
Implementeringen

Voorbeelden

In het volgende voorbeeld is de van de ItemsSourceListBox locatie gebonden aan plaatsen, een ObservableCollection<T> van plaatsobjecten . Plaatsobjecten hebben eigenschappen Naam en Status.

Elk ListBoxItem van de ListBox objecten geeft een place-object weer. Het Style in het voorbeeld wordt toegepast op elke ListBoxItem.

De DataTrigger is zodanig opgegeven dat als de status van het gegevensitem Plaats 'WA' is, de voorgrond van de corresponderende ListBoxItem is ingesteld op Rood.

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

In het volgende voorbeeld ziet u hoe u een DataTrigger, een BeginStoryboard actie en een Storyboard eigenschap kunt animeren wanneer afhankelijke gegevens voldoen aan een opgegeven voorwaarde. In het voorbeeld worden inventarisgegevens in een ListBox besturingselement weergegeven. Het maakt gebruik van een DataTrigger animatie Opacity voor elke ListBoxItem die een out-of-stock boek bevat.

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

Opmerkingen

Style, ControlTemplateen DataTemplate alle hebben een triggerverzameling. Met A DataTrigger kunt u eigenschapswaarden instellen wanneer de eigenschapswaarde van het gegevensobject overeenkomt met een opgegeven Value. Als u bijvoorbeeld een lijst met objecten weergeeft, wilt u mogelijk dat de voorgrondkleur verschilt op basis van Employee elke Employee's huidige aanwezigheid. (Wie momenteel op vakantie is, Employees wordt bijvoorbeeld weergegeven met een paarse voorgrond.) In sommige scenario's is het mogelijk geschikter om een conversieprogramma te maken of om een DataTemplateSelector. Zie het overzicht van gegevens templating voor meer informatie.

Houd er rekening mee dat u zowel de als Binding de Value eigenschappen op een DataTrigger moet opgeven om de gegevenstrigger zinvol te laten zijn. Als een of beide eigenschappen niet zijn opgegeven, wordt er een uitzondering gegenereerd.

De Setters eigenschap van een DataTrigger object kan alleen bestaan uit Setter objecten. Als u een Setter onderliggend element aan een DataTrigger object toevoegt, wordt dit impliciet toegevoegd aan het SetterBaseCollectionDataTrigger object. EventSetterobjecten worden niet ondersteund; Style.Setters ondersteunt alleen EventSetter objecten.

Constructors

Name Description
DataTrigger()

Initialiseert een nieuw exemplaar van de DataTrigger klasse.

Eigenschappen

Name Description
Binding

Hiermee haalt u de binding op die de eigenschapswaarde van het gegevensobject produceert of stelt u deze in.

DependencyObjectType

Hiermee haalt u het DependencyObjectType CLR-type van dit exemplaar op.

(Overgenomen van DependencyObject)
Dispatcher

Hiermee wordt de Dispatcher aan dit DispatcherObject gekoppelde bestand.

(Overgenomen van DispatcherObject)
EnterActions

Hiermee haalt u een verzameling TriggerAction objecten op die moeten worden toegepast wanneer het triggerobject actief wordt. Deze eigenschap is niet van toepassing op de EventTrigger klasse.

(Overgenomen van TriggerBase)
ExitActions

Hiermee haalt u een verzameling TriggerAction objecten op die moeten worden toegepast wanneer het triggerobject inactief wordt. Deze eigenschap is niet van toepassing op de EventTrigger klasse.

(Overgenomen van TriggerBase)
IsSealed

Hiermee wordt een waarde opgehaald die aangeeft of dit exemplaar momenteel is verzegeld (alleen-lezen).

(Overgenomen van DependencyObject)
Setters

Hiermee haalt u een verzameling Setter objecten op die de eigenschapswaarden beschrijven die moeten worden toegepast wanneer het gegevensitem voldoet aan de opgegeven voorwaarde.

Value

Hiermee wordt de waarde opgehaald of ingesteld die moet worden vergeleken met de eigenschapswaarde van het gegevensobject.

Methoden

Name Description
CheckAccess()

Bepaalt of de aanroepende thread toegang heeft tot dit DispatcherObject.

(Overgenomen van DispatcherObject)
ClearValue(DependencyProperty)

Hiermee wist u de lokale waarde van een eigenschap. De eigenschap die moet worden gewist, wordt opgegeven door een DependencyProperty id.

(Overgenomen van DependencyObject)
ClearValue(DependencyPropertyKey)

Hiermee wist u de lokale waarde van een alleen-lezen eigenschap. De eigenschap die moet worden gewist, wordt opgegeven door een DependencyPropertyKey.

(Overgenomen van DependencyObject)
CoerceValue(DependencyProperty)

Hiermee wordt de waarde van de opgegeven afhankelijkheidseigenschap gecodeerd. Dit wordt bereikt door een CoerceValueCallback functie aan te roepen die is opgegeven in eigenschapsmetagegevens voor de afhankelijkheidseigenschap, zoals deze bestaat bij het aanroepen DependencyObject.

(Overgenomen van DependencyObject)
Equals(Object)

Bepaalt of een opgegeven DependencyObject gelijk is aan de huidige DependencyObject.

(Overgenomen van DependencyObject)
GetHashCode()

Hiermee haalt u een hashcode op.DependencyObject

(Overgenomen van DependencyObject)
GetLocalValueEnumerator()

Hiermee maakt u een gespecialiseerde enumerator om te bepalen welke afhankelijkheidseigenschappen lokaal waarden hebben ingesteld.DependencyObject

(Overgenomen van DependencyObject)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
GetValue(DependencyProperty)

Retourneert de huidige effectieve waarde van een afhankelijkheidseigenschap op dit exemplaar van een DependencyObject.

(Overgenomen van DependencyObject)
InvalidateProperty(DependencyProperty)

Evalueert de effectieve waarde voor de opgegeven afhankelijkheidseigenschap opnieuw.

(Overgenomen van DependencyObject)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Aangeroepen wanneer de effectieve waarde van een afhankelijkheidseigenschap op deze DependencyObject eigenschap is bijgewerkt. De specifieke afhankelijkheidseigenschap die is gewijzigd, wordt gerapporteerd in de gebeurtenisgegevens.

(Overgenomen van DependencyObject)
ReadLocalValue(DependencyProperty)

Retourneert de lokale waarde van een afhankelijkheidseigenschap, als deze bestaat.

(Overgenomen van DependencyObject)
ReceiveMarkupExtension(Object, XamlSetMarkupExtensionEventArgs)

Hiermee worden gevallen verwerkt waarbij een markeringsextensie een waarde biedt voor een eigenschap van een DataTrigger object.

SetCurrentValue(DependencyProperty, Object)

Hiermee stelt u de waarde van een afhankelijkheidseigenschap in zonder de waardebron te wijzigen.

(Overgenomen van DependencyObject)
SetValue(DependencyProperty, Object)

Hiermee stelt u de lokale waarde van een afhankelijkheidseigenschap in, die is opgegeven door de id van de afhankelijkheidseigenschap.

(Overgenomen van DependencyObject)
SetValue(DependencyPropertyKey, Object)

Hiermee stelt u de lokale waarde van een alleen-lezen afhankelijkheidseigenschap in, die is opgegeven door de DependencyPropertyKey id van de afhankelijkheidseigenschap.

(Overgenomen van DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Retourneert een waarde die aangeeft of serialisatieprocessen de waarde voor de opgegeven afhankelijkheidseigenschap moeten serialiseren.

(Overgenomen van DependencyObject)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)
VerifyAccess()

Hiermee wordt afgedwongen dat de aanroepende thread toegang heeft tot dit DispatcherObject.

(Overgenomen van DispatcherObject)

Expliciete interface-implementaties

Name Description
IAddChild.AddChild(Object)

Hiermee voegt u een onderliggend object toe.

IAddChild.AddText(String)

Hiermee voegt u de tekstinhoud van een knooppunt toe aan het object.

Van toepassing op

Zie ook