如果选中,则更改CheckboxColumn的颜色

时间:2012-03-18 17:52:28

标签: c# wpf xaml datagrid checkbox

搜索了很多关于这个问题,但从未找到答案,解决了这个问题。

我在WPF数据网格中有以下CheckboxColumn:

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

变量erledigt包含0或1.现在我想,如果选中了复选框,则cellbackground为绿色。 绝望地搜索了一个托运物业。我该如何管理?

1 个答案:

答案 0 :(得分:1)

您可以在CellStyle上使用DataTrigger的列中添加erledigt,您不需要IsChecked属性本身。使用ElementStyleEditingElementStyle,您应该可以在IsChecked上添加正常的Trigger,因为该样式应该应用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">