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

时间:2011-02-11 13:31:38

标签: wpf validation data-binding

在WPF 4中,绑定组上的绑定表达式列表(为ValidationRule的Validate方法传递)为空。

AutoGenerateColumns是真还是假是一样的,是否已将DataGridBoundColumns显式添加到数据网格中。

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

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

但有没有人有解决方法,所以我可以从ValidationRule中获得正确的绑定表达式?

1 个答案:

答案 0 :(得分:1)

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

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

换句话说,新的DataGrid实际上修复了旧DataGrid的一个不良特性,因此工作方式略有不同(即缺少的绑定是设计的),但你仍然可以做什么你需要做的。

微软自己的解释是在这个Microsoft Connect链接中:

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