如何通知视图模型的所有属性已更改

时间:2010-08-06 09:01:38

标签: mvvm inotifypropertychanged

在MVVM模式中,如何通知视图模型的所有属性都发生了变化?我不想调用所有属性的所有notifypropertychanged事件。

我有一个实体类,在视图模型中,我将实体的所有公共字段都写为公共属性。我想重新绑定新实体,只需编写一行代码来通知所有属性都已更改?

感谢您的帮助。

2 个答案:

答案 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表示已成功尝试过至少一次。