【问题标题】:Update all bindings in UserControl at once一次更新 UserControl 中的所有绑定
【发布时间】:2009-04-27 16:57:23
【问题描述】:

当 UserControl 的可见性变为 Visible 时,我需要更新其上的所有绑定。几乎我所有的绑定都绑定到用​​户控件的 DataContext 属性,所以我正在尝试更新该绑定的目标:

BindingOperations.GetBindingExpressionBase(this, UserControl.DataContextProperty).UpdateTarget();

但是我得到nullGetBindingExpression(..) 方法的结果,我想知道我是不是用错了。

另外,有没有其他好的方法来刷新控件上的所有绑定(使用 DataContext 作为源)。

【问题讨论】:

    标签: wpf data-binding wpf-controls custom-controls


    【解决方案1】:

    好吧,您可以重新分配DataContext

    var dataContext = DataContext;
    DataContext = null;
    DataContext = dataContext;
    

    仅供参考,将属性重置为其值(即DataContext = DataContext)将不起作用。

    【讨论】:

    • 天啊,你真是个天才!为什么,为什么我没有想到这个?!谢谢,这工作:)
    • 有没有更优雅的 WPF'y 方式来做到这一点? WPF 不应该支持某种绑定刷新机制吗?
    • 最疯狂的是,没有第二行,刷新就不会发生。看来无论您如何调整 DataContext 属性,除非将其设置为 null,否则不会发生任何事情。感谢您提供有用的答案。
    【解决方案2】:

    您在错误的属性上使用了 BindingOperations.GetBindingExpressionBase 方法。您必须在绑定到 DataContext 属性的属性上使用它,而不是 DataContext 属性本身。

    【讨论】:

      猜你喜欢
      • 2021-10-10
      • 2011-10-27
      • 2011-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-21
      • 2018-05-15
      • 1970-01-01
      相关资源
      最近更新 更多