DataTrigger Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Representa um gatilho que aplica valores de propriedade ou executa ações quando os dados associados atendem a uma condição especificada.
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
- Herança
- Atributos
- Implementações
Exemplos
No exemplo a seguir, o ItemsSource do ListBox é associado a Places, um ObservableCollection<T> dos objetos Place . Objetos de local têm propriedades Nome e Estado.
Cada ListBoxItem um deles ListBox exibe um objeto Place . O Style exemplo é aplicado a cada ListBoxItem.
É DataTrigger especificado de modo que, se o item de dados State of the Place for "WA", o primeiro plano do correspondente ListBoxItem será definido como Vermelho.
<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>
O exemplo a seguir mostra como usar uma DataTrigger, uma BeginStoryboard ação e uma Storyboard para animar uma propriedade quando os dados associados atendem a uma condição especificada. O exemplo exibe informações de inventário em um ListBox controle. Ele usa um DataTrigger para animar cada Opacity ListBoxItem um que contém um livro fora de estoque.
<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>
Comentários
Style, ControlTemplatee DataTemplate todos têm uma coleção de gatilhos. Um DataTrigger permite definir valores de propriedade quando o valor da propriedade do objeto de dados corresponde a um especificado Value. Por exemplo, se você estiver exibindo uma lista de Employee
objetos, talvez queira que a cor do primeiro plano seja diferente com base em cada Employee's
presença atual. (Por exemplo, Employees
quem está atualmente de férias é exibido com um primeiro plano roxo.) Em alguns cenários, pode ser mais adequado criar um conversor ou usar um DataTemplateSelector. Para obter mais informações, consulte a Visão geral da Modelagem de Dados.
Observe que você deve especificar as propriedades e Value as Binding propriedades em um DataTrigger para que o gatilho de dados seja significativo. Se uma ou ambas as propriedades não forem especificadas, uma exceção será gerada.
A Setters propriedade de um DataTrigger objeto só pode consistir em Setter objetos. Adicionar um Setter filho a um DataTrigger objeto o adiciona implicitamente ao SetterBaseCollection DataTrigger objeto. EventSetternão há suporte para objetos; só dá EventSetter suporte a Style.Setters objetos.
Construtores
DataTrigger() |
Inicializa uma nova instância da classe DataTrigger. |
Propriedades
Binding |
Obtém ou define o vínculo que produz o valor da propriedade do objeto de dados. |
DependencyObjectType |
Obtém o DependencyObjectType que encapsula o tipo CLR dessa instância. (Herdado de DependencyObject) |
Dispatcher |
Obtém o Dispatcher ao qual este DispatcherObject está associado. (Herdado de DispatcherObject) |
EnterActions |
Obtém uma coleção de objetos TriggerAction a ser aplicada quando o objeto gatilho se tornar ativo. Essa propriedade não se aplica à classe EventTrigger. (Herdado de TriggerBase) |
ExitActions |
Obtém uma coleção de objetos TriggerAction a ser aplicada quando o objeto de gatilho se tornar inativo. Essa propriedade não se aplica à classe EventTrigger. (Herdado de TriggerBase) |
IsSealed |
Obtém um valor que indica se essa instância está validada no momento (somente leitura). (Herdado de DependencyObject) |
Setters |
Obtém uma coleção de objetos Setter, que descrevem os valores de propriedade a aplicar quando o item de dados atender a condição especificada. |
Value |
Obtém ou define o valor a ser comparado com o valor da propriedade do objeto de dados. |
Métodos
CheckAccess() |
Determina se o thread de chamada tem acesso a este DispatcherObject. (Herdado de DispatcherObject) |
ClearValue(DependencyProperty) |
Limpa o valor local de uma propriedade. A propriedade a ser limpa é especificada por um identificador DependencyProperty. (Herdado de DependencyObject) |
ClearValue(DependencyPropertyKey) |
Limpa o valor local de uma propriedade somente leitura. A propriedade a ser limpa é especificada por um DependencyPropertyKey. (Herdado de DependencyObject) |
CoerceValue(DependencyProperty) |
Converte o valor da propriedade de dependência especificada. Isso é feito invocando qualquer função CoerceValueCallback especificada nos metadados de propriedade para a propriedade de dependência, visto que ela existe na chamada a DependencyObject. (Herdado de DependencyObject) |
Equals(Object) |
Determina se um DependencyObject fornecido é equivalente ao DependencyObject atual. (Herdado de DependencyObject) |
GetHashCode() |
Obtém o código hash para esse DependencyObject. (Herdado de DependencyObject) |
GetLocalValueEnumerator() |
Cria um enumerador especializado para determinar quais propriedades de dependência têm valores definidos localmente nessa DependencyObject. (Herdado de DependencyObject) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
GetValue(DependencyProperty) |
Retorna o valor efetivo atual de uma propriedade de dependência nessa instância de um DependencyObject. (Herdado de DependencyObject) |
InvalidateProperty(DependencyProperty) |
Reavalia o valor efetivo para a propriedade de dependência especificada. (Herdado de DependencyObject) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Invocado sempre que o valor efetivo de qualquer propriedade de dependência nesse DependencyObject for atualizado. A propriedade de dependência específica que mudou é relatada os dados do evento. (Herdado de DependencyObject) |
ReadLocalValue(DependencyProperty) |
Retorna o valor local de uma propriedade de dependência, local, se houver. (Herdado de DependencyObject) |
ReceiveMarkupExtension(Object, XamlSetMarkupExtensionEventArgs) |
Lida com casos em que uma extensão de marcação fornece um valor para uma propriedade de um objeto DataTrigger. |
SetCurrentValue(DependencyProperty, Object) |
Define o valor da propriedade de dependência sem alterar a origem do valor. (Herdado de DependencyObject) |
SetValue(DependencyProperty, Object) |
Define o valor local de uma propriedade de dependência, especificada pelo identificador da propriedade de dependência. (Herdado de DependencyObject) |
SetValue(DependencyPropertyKey, Object) |
Define o valor de uma propriedade de dependência somente leitura, especificada pelo identificador DependencyPropertyKey da propriedade de dependência. (Herdado de DependencyObject) |
ShouldSerializeProperty(DependencyProperty) |
Retorna um valor que indica se os processos de serialização devem serializar o valor da propriedade de dependência fornecida. (Herdado de DependencyObject) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
VerifyAccess() |
Impõe que o thread de chamada tenha acesso a este DispatcherObject. (Herdado de DispatcherObject) |
Implantações explícitas de interface
IAddChild.AddChild(Object) |
Adiciona um objeto filho. |
IAddChild.AddText(String) |
Adiciona o conteúdo do texto de um nó ao objeto. |