wpf - 绑定(bind)组上的绑定(bind)表达式列表为空的解决方法

标签 wpf validation data-binding

在 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 链接中:

  • BindingExpressions on BindingGroup passed to ValidationRule in DataGrid.RowValidationRules is empty

  • 这是一个描述 BindingGroup.SharesProposedValues 的博客。用另一种方式:
  • List of features to track in WPF4 and the details on beta1
  • 关于wpf - 绑定(bind)组上的绑定(bind)表达式列表为空的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4969568/

    上一篇:WPF重绘问题

    下一篇:qt - Qshow段错误

    相关文章:

    wpf - 如何使用数据绑定(bind)更改 XAML 文件的样式?

    wpf - OpenGL 上方的透明窗口

    wpf - 如何将 WPF/XAML GridRow 的高度设置为“自动”,但仍将其限制为 Grid 的最大可用高度?

    c# - 使用 MVVM 时我应该在哪个类中加载数据

    wpf - 调试 ElementName 绑定(bind)

    java - Spring 中任意 Model 对象的数据绑定(bind)

    javascript - 使用 jQuery 防止 html 输入中的值

    validation - 是否可以从聚合工厂调用规范进行验证,或者该验证调用是否属于单元测试 (DDD)?

    c# - 在 ViewModel 中通过代码设置 ValidationError

    asp.net - 在 DropDownList 上调用 DataBind() 时出现 ArgumentNullException