Измените цвет CheckboxColumn, если установлен - PullRequest
0 голосов
/ 18 марта 2012

Много искал об этой проблеме, но так и не нашел ответа, который решил ее.

У меня есть следующий столбец CheckboxColumn в сетке данных WPF:

<DataGridCheckBoxColumn Header="Erledigt" Binding="{Binding Path=erledigt}"  />

Переменная erledigt содержит 0 или 1. Теперь я хочу, чтобы, если флажок установлен, фоновая ячейка зеленого цвета. Безнадежно искал проверенную недвижимость. Как я могу справиться с этим?

1 Ответ

1 голос
/ 18 марта 2012

Вы можете добавить CellStyle к столбцу, в котором вы просто используете DataTrigger для erledigt, вам не нужно само свойство IsChecked. Используя ElementStyle и EditingElementStyle, вы сможете добавить нормальный Trigger к IsChecked, так как стиль должен соответствовать CheckBoxes, однако область действия также будет ограничена CheckBoxes сами, а не клетка.


<DataGridCheckBoxColumn.CellStyle>
    <Style TargetType="DataGridCell">
        <Style.Triggers>
            <DataTrigger Binding="{Binding erledigt}" Value="1">
                <Setter Property="Background" Value="LightGreen"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</DataGridCheckBoxColumn.CellStyle>

Вы также можете привязать к CheckBox.IsChecked с уровня ячейки, это приводит к тому, что цвет будет изменяться сразу, а не после фиксации изменения, что затем влияет на свойство привязки. Для этого измените триггер в CellStyle на этот:

<DataTrigger Binding="{Binding Content.IsChecked,
                               RelativeSource={RelativeSource Self}}"
             Value="True">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...