2013-05-29 32 views
2

我有一個奇怪的問題:我有一個WPF屏幕,其中有一個擴展的TextBox,在某些情況下會進行一些轉換,並且該屬性綁定到視圖模型上的屬性。數據上下文更改後,將重新評估轉換。當重新評估時,我的擴展TextBox具有新的數據上下文,但BindingOperations.GetBindingExpression(textBox, dpproperty).DataItem仍舊是舊的數據上下文。 也許我在changind數據上下文之後做出的轉換太早了?通常情況下,數據上下文不會更改爲整個屏幕,因此要重新評估綁定? 謝謝!數據上下文發生更改後的綁定問題

回答

0

那麼問題是,視圖的綁定不會注意到DataContext已更改。所以他們仍然在首先分配的虛擬機上「尋找」。

因此,解決該問題的最佳方法是將虛擬機中的數據更改爲DataContext,而不是分配另一個實例。由於VM應該執行INotifyPropertyChanged,綁定將自動更新。

+0

當數據上下文發生變化時,綁定會刷新到整個樹中,但在我的情況下,我在擴展文本框的模板上有一些綁定。這裏的datacontext在控制位置之後發生了一些延遲,並在觸發了數據上下文事件之後發生了一些延遲,因此綁定在來自我的擴展文本框模板的datacontext真正更改之前被刷新,因此綁定仍然指向舊的datacontext – florian2905