TestScenario:BindingExpression的來源發生變化時的通知?
我有一個的DependencyProperty A. 我有一個視圖模型與我使用OneWayToSource對綁定控件的A-屬性綁定屬性的控制。綁定由控件明確更新。
我在運行時切換綁定的ViewModel實例,從而更改我的綁定的基礎源。 當發生這種情況時,我想要一個事件觸發,告訴我的控件我現在可以更新其DependencyProperty A的值。原因是,只要更改綁定的ViewModel,DependencyProperty A的DefaultValue就會寫入Source 。 取而代之的是,我想讓控件提供一個適當的值並手動更新源代碼。
有人可能會認爲只聽DataContextChanged事件就可以解決問題。但是,當這個事件被觸發時,BindingExpression的Source仍然指向舊的ViewModel。
我可以想到的唯一方法就是使用Dispatcher.BeginInvoke和DataContextChanged的EventHandler中的DispatcherPriority.DataBind優先級。
它的工作原理,但不感覺乾淨。
我正在尋找綁定類中的事件,通知我有關源的更改......但是我無法找到它。
謝謝
有同樣的問題......並提出了相同的解決方法,即在'DataContextChanged'處理程序中的BeginInvoking,並再次設置DP值並明確更新源。不幸的是,這隻有當綁定的源代碼真的是元素的數據上下文時纔有效,但是當使用相對源代碼來執行其他操作時......不適用。:/ – poke 2013-07-11 13:03:35