测试场景:
我有一个带有 DependencyProperty A 的控件。
我有一个带有属性 A 的 ViewModel,我使用 OneWayToSource 绑定将其绑定到控件的 A 属性。绑定由控件显式更新。
我在运行时切换了绑定的 ViewModel 实例,从而更改了绑定的底层源。
发生这种情况时,我希望触发一个事件,告诉我的控件我现在可以更新其 DependencyProperty A 的值。原因是,一旦更改绑定的 ViewModel,DependencyProperty A 的 DefaultValue 就会写入源。
相反,我希望控件能够提供适当的值并手动更新源。
人们可能认为只需侦听 DataContextChanged 事件就可以解决问题。但是,当此事件被触发时,BindingExpression 的 Source 仍然指向旧的 ViewModel。
我能想到的唯一解决方法是在 DataContextChanged 的 EventHandler 中使用 Dispatcher.BeginInvoke 和 DispatcherPriority.DataBind 优先级。
它有效,但对我来说感觉不干净。
我正在绑定类中寻找一个事件,该事件通知我有关源的更改...但是我找不到。
谢谢
也许我不完全理解这个问题,但是你可以使用源更新时通知 http://msdn.microsoft.com/en-us/library/system.windows.data.binding.notifyonsourceupdated.aspx or 目标通知更新 http://msdn.microsoft.com/en-us/library/system.windows.data.binding.notifyontargetupdated属性(以及相应的来源已更新 http://msdn.microsoft.com/en-us/library/system.windows.data.binding.sourceupdated or 目标已更新 http://msdn.microsoft.com/en-us/library/system.windows.data.binding.targetupdated事件)?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)