测试场景:
我有一个带有 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 类中的一个事件,该事件通知我源的更改......但是我找不到。
谢谢