【问题标题】:change background of DataGrid CheckBox Column for validation errors更改 DataGrid CheckBox 列的背景以进行验证错误
【发布时间】:2013-08-23 01:55:59
【问题描述】:

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

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

【问题讨论】:

    标签: wpf validation checkbox datagrid


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-11
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 2013-03-16
      • 2016-11-30
      • 2012-02-15
      • 1970-01-01
      相关资源
      最近更新 更多