从DataGridTemplateColumn ContentPresenter中删除ErrorTemplate

时间:2013-02-20 23:25:31

标签: c# wpf wpfdatagrid

我发现当行的项目包含验证错误时,用于显示ContentPresenter内容的DataGridTemplateColumn会显示默认ErrorTemplate。我看不出任何直接的方法来阻止这种情况。有什么想法吗?

这是我第一次尝试确保没有显示验证错误模板:

<DataGridTemplateColumn Width="70" Header="Enabled" Validation.ErrorTemplate="{x:Null}" >
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <CheckBox IsChecked="{Binding Enabled.Value}"
                      HorizontalAlignment="Center"
                      VerticalAlignment="Center" Validation.ErrorTemplate="{x:Null}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellStyle>
        <Style >
            <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/>
        </Style>
    </DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>

Example

使用Snoop我看到该单元格包含显示验证错误的ContentPresenter

我发现只能通过删除数据网格中所有内容展示器上的错误模板来禁用此功能:

<DataGrid.Resources>
    <Style TargetType="ContentPresenter">
        <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/>
    </Style>
</DataGrid.Resources>

有没有办法只影响单DataGridTemplateColumn

这篇文章似乎很相似: DataGridCell Validation.ErrorTemplate ignored

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。从ContentPresenter中添加以DataGridTemplateColumn.CellStyle为目标的资源样式可以解决问题。

<DataGridTemplateColumn.CellStyle>
    <Style TargetType="{x:Type DataGridCell}">
        <Style.Resources>
            <Style TargetType="{x:Type ContentPresenter}">
                <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/>
            </Style>
        </Style.Resources>
    </Style>
</DataGridTemplateColumn.CellStyle>