BindingExpression的来源发生变化时的通知?

时间:2012-08-09 17:43:04

标签: wpf data-binding

TestScenario:

我有一个带有DependencyProperty A的Control。 我有一个带有属性A的ViewModel,我使用OneWayToSource绑定绑定Control的A-Property。 Binding由Control明确更新。

我在运行时切换绑定的ViewModel实例,从而更改了我的Binding的基础Source。 当发生这种情况时,我希望触发一个事件,告诉我的控件我现在可以更新其DependencyProperty A的值。原因是,只要更改绑定的ViewModel,DependencyProperty A的DefaultValue就会写入Source。 相反,我希望控件能够提供正确的值并手动更新源。

有人可能会认为只是收听DataContextChanged事件就可以解决问题。但是,当此事件被触发时,BindingExpression的Source仍然指向旧的ViewModel。

我能想到的唯一的解决方法是在DataContextChanged的EventHandler中使用Dispatcher.BeginInvoke和DispatcherPriority.DataBind优先级。

它有效,但对我来说并不干净。

我在Binding-class中寻找一个事件来通知我关于Source的变化...但是我找不到。

谢谢

1 个答案:

答案 0 :(得分:0)

也许我不完全理解这个问题,但您可以使用NotifyOnSourceUpdatedNotifyOnTargetUpdated属性(以及相应的SourceUpdatedTargetUpdated事件)吗?< / p>