在MVVM模式中,如何通知視圖模型的所有屬性已更改?我不想調用所有屬性的所有notifypropertychanged事件。如何通知視圖模型的所有屬性已更改
我有一個實體類,在視圖模型中,我將實體的所有公共字段寫爲公共屬性。我想重新綁定新實體,只寫一行代碼來通知所有屬性已更改?
感謝您的幫助。
在MVVM模式中,如何通知視圖模型的所有屬性已更改?我不想調用所有屬性的所有notifypropertychanged事件。如何通知視圖模型的所有屬性已更改
我有一個實體類,在視圖模型中,我將實體的所有公共字段寫爲公共屬性。我想重新綁定新實體,只寫一行代碼來通知所有屬性已更改?
感謝您的幫助。
用一個空字符串作爲屬性名就提高PropertyChanged
事件:
OnPropertyChanged(String.Empty);
是的,使用null或空字符串觸發PropertyChanged事件的竅門。 – 2010-08-06 14:47:41
您好托馬斯,這是否適用於Uwp解決方案呢?我發現在某些項目中,這在Windows 8.1或通用Windows平臺應用程序中效果不佳。感謝所有人! – soydachi 2017-03-27 13:41:19
@dachibox,我從來沒有使用UWP,所以我不知道...但我希望它能夠工作。 – 2017-03-27 14:31:50
好我的理解從你的問題是這樣的..
View <> ViewModel <> Entity (with a bunch of properties)
視圖綁定到視圖模型,代表實體。您現在想要替換支持實體並指示視圖刷新以更新到較新的實體。
我建議在ViewModel中實現一個索引器,該索引器接受一個字符串(支持屬性的名稱)。如果需要,ViewModel可以用作緩存,僅在未命中時將其委託給支持實體。
當您替換實體時,viewModel將清除其緩存並使用String.Empty或null觸發NotifyPropertyChanged(在索引器集合中)。我今天得知,indicates all properties have changed。
這樣你就不會在ViewModel中創建n個委託屬性。 A google search result顯示它至少已經嘗試過一次成功。
+1今天教我的東西。 – Gishu 2010-08-06 09:25:40