1

(Visual Studio 2010)我正在尝试对CheckBoxColumnWPF 数据网格中的 a 执行验证。我已经设置了一个验证规则,如果它失败了,我希望单元格背景变成红色并有工具提示:

 <DataGridCheckBoxColumn Header="Checked" >
                <DataGridCheckBoxColumn.Binding>
                    <Binding Path="CheckProperty" Mode="TwoWay" ValidatesOnDataErrors="True" UpdateSourceTrigger="PropertyChanged" >
                        <Binding.ValidationRules>
                            <local:CheckValidationRule ValidationStep="UpdatedValue" />
                        </Binding.ValidationRules>
                    </Binding>
                </DataGridCheckBoxColumn.Binding>
                <DataGridCheckBoxColumn.CellStyle>
                    <Style TargetType="DataGridCell">
                        <Style.Triggers>
                            <Trigger Property="Validation.HasError" Value="True">
                                <Setter Property="Background" Value="Red"/>
                                <Setter Property="ToolTipService.ToolTip" 
                              Value="{Binding RelativeSource={RelativeSource Self},
                                Path=(Validation.Errors).CurrentItem.ErrorContent}"/>
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </DataGridCheckBoxColumn.CellStyle>
            </DataGridCheckBoxColumn>

但是当验证失败时,我的单元格样式会被完全忽略。我实际上已经习惯了这个(但我从来没有想过为什么它被忽略了),所以我尝试使用 aTemplateColumn和 a Checkbox,在那里我可以更改CheckBox边框背景,但仍然没有弄清楚如何更改背景颜色整个细胞本身。

4

1 回答 1

0

尝试使用 DataTrigger 而不是 Trigger 属性:

<DataGridCheckBoxColumn Header="Checked" Binding="{Binding CheckProperty}">
    <DataGridCheckBoxColumn.CellStyle>
        <Style TargetType="{x:Type DataGridCell}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=CheckProperty}" Value="True">
                    <Setter Property="Background" Value="White"></Setter>
                </DataTrigger>
                <DataTrigger Binding="{Binding Path=CheckProperty}" Value="False">
                    <Setter Property="Background" Value="Red"></Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </DataGridCheckBoxColumn.CellStyle>
</DataGridCheckBoxColumn>
于 2014-03-17T17:35:43.977 回答