DataTrigger Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Reprezentuje wyzwalacz, który stosuje wartości właściwości lub wykonuje akcje, gdy powiązane dane spełniają określony warunek.
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
- Dziedziczenie
- Atrybuty
- Implementuje
Przykłady
W poniższym przykładzie element ItemsSource ListBox jest powiązany z miejscami, ObservableCollection<T> obiektami Place . Obiekty place mają właściwości Name (Nazwa ) i State (Stan).
Każdy ListBoxItem z nich ListBox wyświetla obiekt Place . Element Style w przykładzie jest stosowany do każdego ListBoxItemelementu .
Parametr DataTrigger jest określony tak, że jeśli element stanu miejsca danych to "WA", pierwszy plan odpowiedniego ListBoxItem elementu jest ustawiony na Czerwony.
<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>
W poniższym przykładzie pokazano, jak używać DataTriggerakcji , BeginStoryboard i wartości Storyboard , aby animować właściwość, gdy powiązane dane spełniają określony warunek. W przykładzie są wyświetlane informacje o spisie w kontrolce ListBox . Używa elementu do DataTrigger animowania Opacity każdego ListBoxItem , który zawiera książkę poza magazynem.
<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>
Uwagi
Style, ControlTemplatei DataTemplate wszystkie mają kolekcję wyzwalaczy. Element A DataTrigger umożliwia ustawianie wartości właściwości, gdy wartość właściwości obiektu danych jest zgodna z określoną Valuewartością . Jeśli na przykład wyświetlasz listę Employee
obiektów, kolor pierwszego planu może być inny na podstawie każdej Employee's
bieżącej obecności. (Na przykład osoby Employees
, które są obecnie na wakacjach, są wyświetlane z fioletowym pierwszym planem). W niektórych scenariuszach może być bardziej odpowiednie do utworzenia konwertera lub użycia elementu DataTemplateSelector. Aby uzyskać więcej informacji, zobacz Omówienie tworzenia szablonów danych.
Należy pamiętać, że należy określić właściwości Binding i Value dla DataTrigger wyzwalacza danych, aby był zrozumiały. Jeśli nie określono jednej lub obu właściwości, zgłaszany jest wyjątek.
Właściwość Setters DataTrigger obiektu może składać się tylko z Setter obiektów. Setter Dodanie elementu podrzędnego DataTrigger do obiektu niejawnie dodaje go do SetterBaseCollection obiektu dla DataTrigger obiektu . EventSetterobiekty nie są obsługiwane; obsługuje EventSetter tylko Style.Setters obiekty.
Konstruktory
DataTrigger() |
Inicjuje nowe wystąpienie klasy DataTrigger. |
Właściwości
Binding |
Pobiera lub ustawia powiązanie, które generuje wartość właściwości obiektu danych. |
DependencyObjectType |
Pobiera klasę DependencyObjectType , która opakowuje typ CLR tego wystąpienia. (Odziedziczone po DependencyObject) |
Dispatcher |
Dispatcher Pobiera tę DispatcherObject wartość skojarzona z. (Odziedziczone po DispatcherObject) |
EnterActions |
Pobiera kolekcję TriggerAction obiektów do zastosowania, gdy obiekt wyzwalacza staje się aktywny. Ta właściwość nie ma zastosowania do EventTrigger klasy . (Odziedziczone po TriggerBase) |
ExitActions |
Pobiera kolekcję TriggerAction obiektów do zastosowania, gdy obiekt wyzwalacza staje się nieaktywny. Ta właściwość nie ma zastosowania do EventTrigger klasy . (Odziedziczone po TriggerBase) |
IsSealed |
Pobiera wartość wskazującą, czy to wystąpienie jest obecnie zapieczętowane (tylko do odczytu). (Odziedziczone po DependencyObject) |
Setters |
Pobiera kolekcję Setter obiektów, które opisują wartości właściwości do zastosowania, gdy element danych spełnia określony warunek. |
Value |
Pobiera lub ustawia wartość do porównania z wartością właściwości obiektu danych. |
Metody
CheckAccess() |
Określa, czy wątek wywołujący ma dostęp do tego DispatcherObjectelementu . (Odziedziczone po DispatcherObject) |
ClearValue(DependencyProperty) |
Czyści wartość lokalną właściwości. Właściwość do wyczyszczenia jest określana przez DependencyProperty identyfikator. (Odziedziczone po DependencyObject) |
ClearValue(DependencyPropertyKey) |
Czyści wartość lokalną właściwości tylko do odczytu. Właściwość do wyczyszczenia jest określana przez element DependencyPropertyKey. (Odziedziczone po DependencyObject) |
CoerceValue(DependencyProperty) |
Przekształca wartość określonej właściwości zależności. Jest to realizowane przez wywołanie dowolnej CoerceValueCallback funkcji określonej w metadanych właściwości dla właściwości zależności, ponieważ istnieje w wywołaniu DependencyObject. (Odziedziczone po DependencyObject) |
Equals(Object) |
Określa, czy podany DependencyObject element jest odpowiednikiem bieżącego DependencyObjectelementu . (Odziedziczone po DependencyObject) |
GetHashCode() |
Pobiera kod skrótu dla tego DependencyObjectpliku . (Odziedziczone po DependencyObject) |
GetLocalValueEnumerator() |
Tworzy wyspecjalizowany moduł wyliczający do określania, które właściwości zależności mają lokalnie ustawione wartości dla tego DependencyObjectelementu . (Odziedziczone po DependencyObject) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
GetValue(DependencyProperty) |
Zwraca bieżącą obowiązującą wartość właściwości zależności dla tego wystąpienia klasy DependencyObject. (Odziedziczone po DependencyObject) |
InvalidateProperty(DependencyProperty) |
Ponownie oblicza efektywną wartość dla określonej właściwości zależności. (Odziedziczone po DependencyObject) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Wywoływane za każdym razem, gdy zostanie zaktualizowana efektywna wartość dowolnej właściwości DependencyObject zależności. Określona właściwość zależności, która została zmieniona, jest zgłaszana w danych zdarzenia. (Odziedziczone po DependencyObject) |
ReadLocalValue(DependencyProperty) |
Zwraca wartość lokalną właściwości zależności, jeśli istnieje. (Odziedziczone po DependencyObject) |
ReceiveMarkupExtension(Object, XamlSetMarkupExtensionEventArgs) |
Obsługuje przypadki, w których rozszerzenie znaczników zapewnia wartość właściwości DataTrigger obiektu. |
SetCurrentValue(DependencyProperty, Object) |
Ustawia wartość właściwości zależności bez zmieniania jej źródła wartości. (Odziedziczone po DependencyObject) |
SetValue(DependencyProperty, Object) |
Ustawia wartość lokalną właściwości zależności określonej przez jej identyfikator właściwości zależności. (Odziedziczone po DependencyObject) |
SetValue(DependencyPropertyKey, Object) |
Ustawia wartość lokalną właściwości zależności tylko do odczytu określonej przez DependencyPropertyKey identyfikator właściwości zależności. (Odziedziczone po DependencyObject) |
ShouldSerializeProperty(DependencyProperty) |
Zwraca wartość wskazującą, czy procesy serializacji powinny serializować wartość dla podanej właściwości zależności. (Odziedziczone po DependencyObject) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
VerifyAccess() |
Wymusza, że wątek wywołujący ma dostęp do tego DispatcherObjectelementu . (Odziedziczone po DispatcherObject) |
Jawne implementacje interfejsu
IAddChild.AddChild(Object) |
Dodaje obiekt podrzędny. |
IAddChild.AddText(String) |
Dodaje zawartość tekstową węzła do obiektu. |