当UserControl的可见性更改为Visible时,我需要更新UserControl上的所有绑定。几乎所有的绑定都绑定到用户控件的DataContext属性,所以我试图更新该绑定的目标:
BindingOperations.GetBindingExpressionBase(this, UserControl.DataContextProperty).UpdateTarget();
但我得null
作为GetBindingExpression(..)
方法的结果,我想知道我是否使用了这个错误。
此外,是否有任何其他好的方法来刷新控件上的所有绑定(使用DataContext作为源)。
答案 0 :(得分:18)
好吧,你可以重新分配DataContext
:
var dataContext = DataContext;
DataContext = null;
DataContext = dataContext;
仅供参考,将该属性重置为其值(即DataContext = DataContext
)将不起作用。
答案 1 :(得分:1)
您在错误的属性上使用BindingOperations.GetBindingExpressionBase方法。您必须在绑定到DataContext属性的属性上使用它,而不是DataContext属性本身。