WPF:數據綁定--DataTrigger數據觸發器

DataTrigger數據觸發器

實現效果:spa

  1. MultiDataTrigger 的 Condition 元素指定,若是 Place 數據項的 Name 和 State 分別爲 Portland 和 OR,則相應的 ListBoxItem 的背景設置爲 Cyan。

clipboard.png
實踐:code

  1. MultiDataTrigger在綁定數據知足一組條件時應用(或多項)屬性值或執行操做。

代碼:
一個及多個條件的觸發器,對象

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

針對數據類型的數據模板:ip

<DataTemplate DataType="{x:Type local: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>

xaml代碼:get

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

擴展:it

  1. MultiDataTrigger 對象與 MultiTrigger 相似,但 MultiDataTrigger 的條件基於綁定數據的屬性值,而不是 UIElement 的屬性值。
  2. 在 MultiDataTrigger 中,當數據項的屬性值與指定的 Value 匹配時,會知足一個條件。 而後,能夠在知足全部條件時使用 Setter 或 EnterActions 和 ExitActions 屬性來應用更改或啓動操做。
  3. MultiDataTrigger 對象的 Setters 屬性只能由 Setter 對象組成。 將 Setter 子項添加到 MultiDataTrigger 對象會將其隱式添加到 MultiDataTrigger 對象的 SetterBaseCollection。 EventSetter 對象不受支持;只有 Style.Setters 支持 EventSetter 對象。
相關文章
相關標籤/搜索