共用方式為


DataTrigger 類別

定義

代表一個觸發器,當綁定資料符合指定條件時,會套用屬性值或執行動作。

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
繼承
屬性
實作

範例

在以下範例中, ItemsSourceListBox 被綁定於 Places,即 ObservableCollection<T>Place 物件的集合。 地點 物件有 NameState 屬性。

每個ListBoxItemListBox展示都是一個 Place 物件。 範例中的 將 Style 應用於每個 ListBoxItem

該項目的指定若地點資料項目的狀態「WA」,則對應ListBoxItem資料的前景為紅色。DataTrigger

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

以下範例說明如何利用 DataTrigger、 動作 BeginStoryboard 和 a Storyboard 來在綁定資料符合指定條件時,讓屬性活化。 範例中顯示了一個控制點中的 ListBox 庫存資訊。 它會用 來DataTrigger動畫化所有ListBoxItem缺貨書籍的 。Opacity

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

備註

StyleControlTemplateDataTemplate、且皆有觸發器集合。 DataTrigger A 允許你設定屬性值,當資料物件的屬性值符合指定的 Value。 例如,如果你要顯示物件清單 Employee ,你可能希望前景顏色根據每個 Employee's 當前的出席人數有所不同。 (例如, Employees 目前正在度假的人物會以紫色前景顯示。)在某些情況下,製作轉換器或使用 DataTemplateSelector. 欲了解更多資訊,請參閱 資料模板概覽

請注意,你必須在 a DataTrigger 上同時指定 BindingValue 屬性,資料觸發才有意義。 若未指定其中一項或兩種屬性,則會拋出例外。

Setters物件的DataTrigger性質只能由物件組成Setter。 將子節點加入SetterDataTrigger物件隱含地加入SetterBaseCollection該物件的 。DataTrigger EventSetter 物件不被支援;只 Style.Setters 支援 EventSetter 物件。

建構函式

名稱 Description
DataTrigger()

初始化 DataTrigger 類別的新執行個體。

屬性

名稱 Description
Binding

取得或設定產生資料物件屬性值的綁定。

DependencyObjectType

會取得 DependencyObjectType 包裹此實例 CLR 類型的 。

(繼承來源 DependencyObject)
Dispatcher

了解 Dispatcher 這與此 DispatcherObject 有關。

(繼承來源 DispatcherObject)
EnterActions

當觸發物件啟用時,會得到一組 TriggerAction 物件套用。 此性質不適用於該 EventTrigger 類別。

(繼承來源 TriggerBase)
ExitActions

當觸發物件變得非活動時,會取得一組 TriggerAction 物件套用。 此性質不適用於該 EventTrigger 類別。

(繼承來源 TriggerBase)
IsSealed

會獲得一個值,表示該實例目前是否封存(唯讀)。

(繼承來源 DependencyObject)
Setters

取得一組 Setter 物件,描述當資料項目符合指定條件時應套用的屬性值。

Value

取得或設定要比較的資料物件屬性值的值。

方法

名稱 Description
CheckAccess()

判斷呼叫執行緒是否能存取此 DispatcherObject

(繼承來源 DispatcherObject)
ClearValue(DependencyProperty)

清算房產的當地價值。 要清除的屬性由識別 DependencyProperty 碼指定。

(繼承來源 DependencyObject)
ClearValue(DependencyPropertyKey)

清除只讀屬性的局部值。 要清除的屬性由 DependencyPropertyKey指定。

(繼承來源 DependencyObject)
CoerceValue(DependencyProperty)

強制設定指定的依賴性質值。 這是透過在屬性CoerceValueCallback中指定的依賴屬性元資料中,呼叫 的依賴屬性中的任何DependencyObject函式來達成的。

(繼承來源 DependencyObject)
Equals(Object)

判斷所給的 DependencyObject 是否等同於電流 DependencyObject

(繼承來源 DependencyObject)
GetHashCode()

會得到一個 DependencyObject雜湊碼。

(繼承來源 DependencyObject)
GetLocalValueEnumerator()

建立專門的枚舉器,用以判斷哪些相依屬性在局部 DependencyObject設定值。

(繼承來源 DependencyObject)
GetType()

取得目前實例的 Type

(繼承來源 Object)
GetValue(DependencyProperty)

回傳此實例 DependencyObject上依賴屬性的當前有效值。

(繼承來源 DependencyObject)
InvalidateProperty(DependencyProperty)

重新評估指定相依性質的有效值。

(繼承來源 DependencyObject)
MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

當任何依賴性財產 DependencyObject 的實際價值更新時,該權利會被調用。 變更的具體相依屬性會在事件資料中報告。

(繼承來源 DependencyObject)
ReadLocalValue(DependencyProperty)

回傳依賴屬性的局部值(若存在)。

(繼承來源 DependencyObject)
ReceiveMarkupExtension(Object, XamlSetMarkupExtensionEventArgs)

處理標記擴充提供物件屬性 DataTrigger 值的情況。

SetCurrentValue(DependencyProperty, Object)

設定依賴屬性的值,且不改變其值來源。

(繼承來源 DependencyObject)
SetValue(DependencyProperty, Object)

設定依賴屬性的局部值,並由其依賴屬性識別碼指定。

(繼承來源 DependencyObject)
SetValue(DependencyPropertyKey, Object)

設定只讀相依屬性的本地值,該值由 DependencyPropertyKey 相依屬性的識別碼指定。

(繼承來源 DependencyObject)
ShouldSerializeProperty(DependencyProperty)

回傳一個值,指示序列化程序是否應該將所提供的相依屬性的值序列化。

(繼承來源 DependencyObject)
ToString()

傳回表示目前 物件的字串。

(繼承來源 Object)
VerifyAccess()

強制呼叫執行緒能存取此 DispatcherObject

(繼承來源 DispatcherObject)

明確介面實作

名稱 Description
IAddChild.AddChild(Object)

新增一個子物件。

IAddChild.AddText(String)

將節點的文字內容加入物件。

適用於

另請參閱