绑定组上的绑定表达式列表为空的解决方法

Kri*_*son 16 data-binding validation wpf

在WPF 4中,绑定组上的绑定表达式列表ValidationRule是空的,该列表传递给的Validate方法.

无论AutoGenerateColumns是真还是假,无论是否DataGridBoundColumns已明确添加到datagrid都是一样的.

在使用DataGridToolkit中的WPF 3.5 SP1中,绑定表达式列表中填充了例外绑定表达式(数据网格中每列为1)

我认为这是一个错误,并已将其发布在Microsoft Connect站点上:https: //connect.microsoft.com/WPF/feedback/details/642815/bindingexpressions-on-bindinggroup-passed-to-validationrule-in-datagrid-rowvalidationrules -是空的

但有没有人有一个解决方法,所以我可以从内部得到正确的绑定表达式ValidationRule

Ric*_*key 1

为了支持在验证成功之前不会提交给双向绑定目标的“建议值”,WPF 4.0DataGrid进行了重新设计,以利用BindingGroup.SharesProposedValuesWPF 4.0 的新功能。由于此更改,不再需要在显示模板的绑定组中使用双向绑定。

您可以使用BindingGroup.TryGetValue检索其他列的建议值,而不是使用WPF ToolkitDataGrid中的旧方法。

换句话说,新版本DataGrid实际上修复了旧版本的一个不良功能DataGrid,因此工作方式略有不同(即缺少的绑定是设计使然),但您仍然可以做您需要做的事情。

Microsoft 自己的话的解释位于此 Microsoft Connect 链接中:

这是一个BindingGroup.SharesProposedValues以另一种方式描述的博客: