在MVVM模式中,如何通知视图模型的所有属性都发生了变化?我不想调用所有属性的所有notifypropertychanged事件。
我有一个实体类,在视图模型中,我将实体的所有公共字段都写为公共属性。我想重新绑定新实体,只需编写一行代码来通知所有属性都已更改?
感谢您的帮助。
答案 0 :(得分:48)
只需使用空字符串作为属性名称提升PropertyChanged
事件:
OnPropertyChanged(String.Empty);
答案 1 :(得分:0)
好的我从你的问题中理解的是这个..
View <> ViewModel <> Entity (with a bunch of properties)
View绑定到ViewModel,ViewModel委托给Entity。您现在想要替换后备实体并通知视图刷新以更新到更新的实体。
我建议在ViewModel中实现一个索引器,它接收一个字符串(支持属性的名称)。如果需要,ViewModel可以用作缓存,仅在未命中时委托给后台实体。
当您替换实体时,viewModel将清除其缓存并使用String.Empty或null触发NotifyPropertyChanged(在索引器集中)。我今天学到的, indicates all properties have changed 。
这样,您就不会在ViewModel中创建n个委托属性。 google search result表示已成功尝试过至少一次。