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的变化...但是我找不到。
谢谢
答案 0 :(得分:0)
也许我不完全理解这个问题,但您可以使用NotifyOnSourceUpdated或NotifyOnTargetUpdated属性(以及相应的SourceUpdated或TargetUpdated事件)吗?< / p>