在 WPF 4 中,绑定(bind)组上的绑定(bind)表达式列表,它被传递给 ValidationRule
的 Validate 方法,为空。AutoGenerateColumns
是否相同是真还是假,DataGridBoundColumns
已明确添加到数据网格中。
在 WPF 3.5 SP1 中使用 DataGrid
来自工具包的绑定(bind)表达式列表填充了异常(exception)的绑定(bind)表达式(数据网格中的每列 1 个)
我认为这是一个错误,并将其发布在 Microsoft Connect 站点上:
https://connect.microsoft.com/WPF/feedback/details/642815/bindingexpressions-on-bindinggroup-passed-to-validationrule-in-datagrid-rowvalidationrules-is-empty
但是有没有人有解决方法,所以我可以从 ValidationRule
中获得正确的绑定(bind)表达式?
最佳答案
为了支持在验证成功之前不会提交给双向绑定(bind)目标的“建议值”,WPF 4.0 DataGrid
重新设计以利用新的 BindingGroup.SharesProposedValues
WPF 4.0 的功能。由于此更改,不再需要在显示模板的绑定(bind)组中使用双向绑定(bind)。
您可以使用 BindingGroup.TryGetValue
检索其他列的建议值,而不是使用与 DataGrid
一起使用的旧方法来自 WPF Toolkit .
换句话说,新的 DataGrid
实际上修复了旧的 DataGrid
的一个不受欢迎的功能。因此,事情的工作方式略有不同(即缺少绑定(bind)是设计使然),但您仍然可以做您需要做的事情。
微软自己的话的解释在这个 Microsoft Connect 链接中:
这是一个描述
BindingGroup.SharesProposedValues
的博客。用另一种方式:关于wpf - 绑定(bind)组上的绑定(bind)表达式列表为空的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4969568/