4

测试场景:

我有一个带有 DependencyProperty A 的控件。我有一个带有属性 A 的 ViewModel,我使用 OneWayToSource 绑定绑定到控件的 A 属性。Binding 由 Control 显式更新。

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

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

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

它有效,但我觉得不干净。

我正在寻找 Binding 类中的一个事件,该事件通知我源的更改......但是我找不到。

谢谢

4

1 回答 1

0

也许我没有完全理解这个问题,但是您可以只使用NotifyOnSourceUpdatedNotifyOnTargetUpdated属性(以及相应的SourceUpdatedTargetUpdated事件)吗?

于 2012-08-09T18:01:34.340 回答