【发布时间】:2018-09-06 02:36:49
【问题描述】:
抱歉,如果这个问题已经被问过,但我无法找到我的具体问题的答案。
我有一个 WPF datagrid,它绑定到一个名为 Waypoint 的对象集合,该集合实现了 IDataErrorInfo。每个Waypoint 对象都有一组具有DataItem 的属性,而IDataErrorInfo 也实现了IDataErrorInfo。
datagrid中的每一列都绑定到DataItem对象的Value属性,我想要的是Waypoint对象绑定到行验证模板和DataItem对象绑定到单元格验证器。
我有一个RowValidationRule,如下:
<DataGrid.RowValidationRules>
<DataErrorValidationRule ValidationStep="UpdatedValue" ValidatesOnTargetUpdated="True"/>
</DataGrid.RowValidationRules>
我已经部分工作了,但是只有当我离开该行时才会显示行验证,更令人沮丧的是,如果一行有错误,那么验证规则不会在任何后续行上执行,这不是我的想。我尝试查看数据网格参考中的代码,看看是否可以在 CommitEdit 方法中进行任何覆盖以触发验证规则,但我很难过。
我们已经进行了覆盖,以便在网格有任何验证错误时可以编辑单元格。默认情况下,在清除任何错误之前,网格不应该是可编辑的,我猜想不显示多行验证错误是设计使然?如果有人对我如何解决这个问题有任何想法,将不胜感激!!!
【问题讨论】:
-
一般来说,我建议不要直接在数据网格中进行编辑。选择一行,在叠加层中进行编辑。你会发现各种各样的问题,例如如果需要一个属性怎么办。用户只需单击不同的行并忽略失败。
-
我很少使用行验证。我的理解是,一旦你完成了一行的编辑,它就会启动。我认为我的结论是,最终为时已晚,无法发挥作用。
标签: c# wpf validation xaml datagrid