我发现当行的项目包含验证错误时,用于显示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>
使用Snoop我看到该单元格包含显示验证错误的ContentPresenter
。
我发现只能通过删除数据网格中所有内容展示器上的错误模板来禁用此功能:
<DataGrid.Resources>
<Style TargetType="ContentPresenter">
<Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/>
</Style>
</DataGrid.Resources>
有没有办法只影响单DataGridTemplateColumn
?
答案 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>