WPF DataGridRow - 考虑触发器中的多个条件

时间:2011-08-23 14:38:36

标签: wpf xaml triggers styles

使用WPF数据网格,我需要遵守这些要求:

  • 在IsMouseOver时更改行背景。
  • 在满足关键属性时将行背景更改为红色。
  • 选择行时将行背景更改为紫色,但不严重。
  • 选择行并严重时,将行背景更改为深红色。

到目前为止我无法满足最后一个条件。我现在的代码是:

<Style x:Key="GridRow" TargetType="DataGridRow">
        <Setter Property="FontSize" Value="10" />
        <Setter Property="Foreground" Value="#000000" />
        <Setter Property="Background" Value="#E5E5E5" />
        <Setter Property="Height" Value="24" />
        <Setter Property="VerticalContentAlignment" Value="Center" />
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="#F5F5F5" />
            </Trigger>
            <DataTrigger Binding="{Binding IsStatusCritical}" Value="True">
                <Setter Property="Background" Value="Red"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
    <Style TargetType="{x:Type DataGridCell}">
        <Style.Triggers>
            <Trigger Property="DataGridCell.IsSelected" Value="True">
                <Setter Property="Foreground" Value="White" />
                <Setter Property="Background" Value="#660066" />
            </Trigger>
        </Style.Triggers>
    </Style>

1 个答案:

答案 0 :(得分:1)

您可以使用MultiDataTriggers解决此问题。只要确保按正确的顺序放置它们,我记得,符合所有条件的最后一个触发器优先。