DataTrigger Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mewakili pemicu yang menerapkan nilai properti atau melakukan tindakan saat data terikat memenuhi kondisi tertentu.
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
- Warisan
- Atribut
- Penerapan
Contoh
Dalam contoh berikut, ItemsSource dari terikat ListBox ke Tempat, objek ObservableCollection<T>Tempat . Objek tempat memiliki properti Nama dan Status.
Masing-masing ListBoxItem menampilkan objek Tempat.ListBox Style Dalam contoh diterapkan ke masing-masing ListBoxItem.
DataTrigger ditentukan sia-sia sehingga jika item data StatusTempat adalah "WA" maka latar depan yang sesuai ListBoxItem diatur ke Merah.
<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>
Contoh berikut menunjukkan cara menggunakan DataTrigger, BeginStoryboard tindakan, dan Storyboard untuk menganimasikan properti saat data terikat memenuhi kondisi tertentu. Contoh menampilkan informasi inventaris dalam ListBox kontrol. Ini menggunakan DataTrigger untuk menganimasikan Opacity setiap ListBoxItem yang berisi buku di luar stok.
<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>
Keterangan
Style, ControlTemplate, dan DataTemplate semua memiliki koleksi pemicu. Memungkinkan DataTrigger Anda mengatur nilai properti saat nilai properti objek data cocok dengan yang ditentukan Value. Misalnya, jika Anda menampilkan daftar Employee objek, Anda mungkin ingin warna latar depan berbeda berdasarkan setiap Employee's kehadiran saat ini. (Misalnya, Employees yang saat ini sedang berlibur ditampilkan dengan latar depan ungu.) Dalam beberapa skenario, mungkin lebih cocok untuk membuat pengonversi atau menggunakan DataTemplateSelector. Untuk informasi selengkapnya, lihat Gambaran Umum Templat Data.
Perhatikan bahwa Anda harus menentukan Binding properti dan Value pada DataTrigger pemicu data agar bermakna. Jika salah satu atau kedua properti tidak ditentukan, pengecualian akan dilemparkan.
Properti SettersDataTrigger objek hanya dapat terdiri dari Setter objek. Setter Menambahkan anak ke DataTrigger objek secara implisit menambahkannya ke SetterBaseCollection untuk DataTrigger objek. EventSetter objek tidak didukung; hanya Style.Setters mendukung EventSetter objek.
Konstruktor
| Nama | Deskripsi |
|---|---|
| DataTrigger() |
Menginisialisasi instans baru dari kelas DataTrigger. |
Properti
| Nama | Deskripsi |
|---|---|
| Binding |
Mendapatkan atau mengatur pengikatan yang menghasilkan nilai properti objek data. |
| DependencyObjectType |
DependencyObjectType Mendapatkan yang membungkus jenis CLR instans ini. (Diperoleh dari DependencyObject) |
| Dispatcher |
Dispatcher Mendapatkan ini DispatcherObject dikaitkan dengan. (Diperoleh dari DispatcherObject) |
| EnterActions |
Mendapatkan kumpulan TriggerAction objek yang akan diterapkan saat objek pemicu menjadi aktif. Properti ini tidak berlaku untuk EventTrigger kelas. (Diperoleh dari TriggerBase) |
| ExitActions |
Mendapatkan kumpulan TriggerAction objek untuk diterapkan saat objek pemicu menjadi tidak aktif. Properti ini tidak berlaku untuk EventTrigger kelas. (Diperoleh dari TriggerBase) |
| IsSealed |
Mendapatkan nilai yang menunjukkan apakah instans ini saat ini disegel (baca-saja). (Diperoleh dari DependencyObject) |
| Setters |
Mendapatkan kumpulan Setter objek, yang menjelaskan nilai properti yang akan diterapkan saat item data memenuhi kondisi yang ditentukan. |
| Value |
Mendapatkan atau mengatur nilai yang akan dibandingkan dengan nilai properti objek data. |
Metode
| Nama | Deskripsi |
|---|---|
| CheckAccess() |
Menentukan apakah utas panggilan memiliki akses ke ini DispatcherObject. (Diperoleh dari DispatcherObject) |
| ClearValue(DependencyProperty) |
Menghapus nilai lokal properti. Properti yang akan dihapus ditentukan oleh DependencyProperty pengidentifikasi. (Diperoleh dari DependencyObject) |
| ClearValue(DependencyPropertyKey) |
Menghapus nilai lokal properti baca-saja. Properti yang akan dihapus ditentukan oleh DependencyPropertyKey. (Diperoleh dari DependencyObject) |
| CoerceValue(DependencyProperty) |
Memaksa nilai properti dependensi yang ditentukan. Ini dilakukan dengan memanggil fungsi apa pun CoerceValueCallback yang ditentukan dalam metadata properti untuk properti dependensi seperti yang ada pada panggilan DependencyObject. (Diperoleh dari DependencyObject) |
| Equals(Object) |
Menentukan apakah yang disediakan DependencyObject setara dengan saat ini DependencyObject. (Diperoleh dari DependencyObject) |
| GetHashCode() |
Mendapatkan kode hash untuk ini DependencyObject. (Diperoleh dari DependencyObject) |
| GetLocalValueEnumerator() |
Membuat enumerator khusus untuk menentukan properti dependensi mana yang telah mengatur nilai secara lokal pada ini DependencyObject. (Diperoleh dari DependencyObject) |
| GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
| GetValue(DependencyProperty) |
Mengembalikan nilai efektif properti dependensi saat ini pada instans ini dari DependencyObject. (Diperoleh dari DependencyObject) |
| InvalidateProperty(DependencyProperty) |
Mengevaluasi kembali nilai efektif untuk properti dependensi yang ditentukan. (Diperoleh dari DependencyObject) |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Dipanggil setiap kali nilai efektif dari properti dependensi apa pun pada ini DependencyObject telah diperbarui. Properti dependensi tertentu yang berubah dilaporkan dalam data peristiwa. (Diperoleh dari DependencyObject) |
| ReadLocalValue(DependencyProperty) |
Mengembalikan nilai lokal properti dependensi, jika ada. (Diperoleh dari DependencyObject) |
| ReceiveMarkupExtension(Object, XamlSetMarkupExtensionEventArgs) |
Menangani kasus di mana ekstensi markup menyediakan nilai untuk properti DataTrigger objek. |
| SetCurrentValue(DependencyProperty, Object) |
Mengatur nilai properti dependensi tanpa mengubah sumber nilainya. (Diperoleh dari DependencyObject) |
| SetValue(DependencyProperty, Object) |
Mengatur nilai lokal properti dependensi, yang ditentukan oleh pengidentifikasi properti dependensinya. (Diperoleh dari DependencyObject) |
| SetValue(DependencyPropertyKey, Object) |
Mengatur nilai lokal properti dependensi baca-saja, yang ditentukan oleh DependencyPropertyKey pengidentifikasi properti dependensi. (Diperoleh dari DependencyObject) |
| ShouldSerializeProperty(DependencyProperty) |
Mengembalikan nilai yang menunjukkan apakah proses serialisasi harus membuat serialisasi nilai untuk properti dependensi yang disediakan. (Diperoleh dari DependencyObject) |
| ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
| VerifyAccess() |
Memberlakukan bahwa utas panggilan memiliki akses ke ini DispatcherObject. (Diperoleh dari DispatcherObject) |
Implementasi Antarmuka Eksplisit
| Nama | Deskripsi |
|---|---|
| IAddChild.AddChild(Object) |
Menambahkan objek anak. |
| IAddChild.AddText(String) |
Menambahkan konten teks simpul ke objek. |