WPF DataGridRow - учет нескольких условий в триггерах - PullRequest
1 голос
/ 23 августа 2011

Работая с сеткой данных 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 Ответ

1 голос
/ 23 августа 2011

Вы можете решить эту проблему, используя MultiDataTriggers . Просто убедитесь, что вы разместили их в правильном порядке, насколько я помню, последний триггер, который отвечает всем критериям, имеет приоритет.

...