Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 为验证错误更改DataGrid复选框列的背景_Wpf_Validation_Checkbox_Datagrid - Fatal编程技术网

Wpf 为验证错误更改DataGrid复选框列的背景

Wpf 为验证错误更改DataGrid复选框列的背景,wpf,validation,checkbox,datagrid,Wpf,Validation,Checkbox,Datagrid,(Visual Studio 2010)我正在尝试对WPF数据网格中的CheckBoxColumn执行验证。我已经设置了验证规则,如果失败,我希望单元格背景变为红色并显示工具提示: <DataGridCheckBoxColumn Header="Checked" > <DataGridCheckBoxColumn.Binding> <Binding Path="CheckProperty" M

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

 <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>


但当验证失败时,我的单元格样式将被完全忽略。我实际上已经习惯了这一点(但我从未想过为什么会忽略它),因此我尝试使用带有
复选框的
模板列
,在那里我可以更改
复选框的边框背景,但是仍然没有弄清楚如何更改整个单元格本身的背景色。

尝试使用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>