DataGridCell Validation.ErrorTemplate被忽略

时间:2012-03-15 14:34:50

标签: wpf validation datagrid idataerrorinfo

我正在尝试设置DataGridCells的Validation.ErrorTemplate,这是xaml代码:

<Style x:Key="{x:Type DataGridCell}"  x:Uid="dataGridCellErrorTemplate" TargetType="{x:Type DataGridCell}">
    <Setter Property="Validation.ErrorTemplate">
        <Setter.Value>
            <ControlTemplate >
                <Border BorderBrush="Green" BorderThickness="2" ToolTip="Heidenei"></Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <!-- following line only for demonstration that the setter is working ... -->
    <Setter Property="Background" Value="Aquamarine"></Setter>              
</Style>

虽然datagridcells的背景成功地显示为绿色(与任何验证结果无关),但使用的Validation.ErrorTemplate仍然是默认值,即红色边框。

我知道stackoverflow中存在类似的问题,例如: Styling DataGridCell Error Template 但他们并没有真正解决我的问题。

感谢任何帮助

2 个答案:

答案 0 :(得分:4)

我相信我遇到了同样的问题。

使用DataGridTemplateColumn时,内容会显示ContentPresenter。此内容演示者使用默认错误模板。

我无法找到为个人DataGridTemplateColumn删除此模板的直接方法,但您可以通过向DataGrid的资源添加样式来删除DataGrid中所有内容展示者。

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

答案 1 :(得分:0)

我很幸运,使用以下TextBlock样式删除了刺激性的红色边框。

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