我正在學習WPF和MVVM。我很好奇在特定情況下會發生什麼。將視圖模型分配給數據上下文:視圖模型何時覆蓋XAML元素?
假設我的視圖模型實現了INotifyPropertyChanged
,情況是我的代碼已經構建了我的視圖模型,然後將其分配給我的窗口的DataContext
。
在我將視圖模型分配到DataContext
時,我的視圖模型中的值可能與XAML元素中的值不同。所以我很好奇贏得了。
我認爲XAML元素會從我的視圖模型中提取所有值,但這不是看起來正在發生的事情。對我的視圖模型所做的更改正確地通知並更新XAML元素。但在我設置DataContext
之前所做的那些更改是而不是反映在XAML元素中。
任何人都可以證實我的解釋是正確的嗎?我已經Google廣泛搜索,但在這個特定問題上找不到任何東西。然而,這似乎是我的應用程序中的行爲。將欣賞別人的觀點或鏈接到更詳細的討論。
我很好奇我的視圖模型實現INotifyPropertyChanged
,我的代碼構建我的視圖模型,然後將其分配給我的窗口DataContext
。
問題是,在我指定給DataContext
的階段,XAML元素中的值可能與我的視圖模型不匹配。那麼哪一個贏。
根據我的測試,看起來XAML元素中的值已經贏了。如果我希望它設置爲我的視圖模型中的值,我必須設置它或讓我的視圖模型發送一個新的屬性更改通知。
您可以發佈一個示例,顯示綁定嗎? – KnowHoper
當你設置綁定時,你的XAML控件的屬性如何保持任何值?沒有'TextBlock Text =「{Binding MyProperty}」Text =「我的默認值」/>' – Jai
@HeySatan:有很多代碼。這需要一些思考,我可以如何改寫它來以適合這裏的形式進行演示。 –