【发布时间】:2010-08-06 09:01:37
【问题描述】:
在 MVVM 模式中,如何通知视图模型的所有属性发生了变化?我不想调用所有属性的所有 notifypropertychanged 事件。
我有一个实体类,在视图模型中,我将实体的所有公共字段都写为公共属性。我想重新绑定新实体,只写一行代码来通知所有属性都已更改?
感谢您的帮助。
【问题讨论】:
-
+1 今天教我一些东西。
标签: mvvm inotifypropertychanged
在 MVVM 模式中,如何通知视图模型的所有属性发生了变化?我不想调用所有属性的所有 notifypropertychanged 事件。
我有一个实体类,在视图模型中,我将实体的所有公共字段都写为公共属性。我想重新绑定新实体,只写一行代码来通知所有属性都已更改?
感谢您的帮助。
【问题讨论】:
标签: mvvm inotifypropertychanged
只需使用空字符串作为属性名称引发PropertyChanged 事件:
OnPropertyChanged(String.Empty);
【讨论】:
好吧,我从你的问题中了解到的是这个..
View <> ViewModel <> Entity (with a bunch of properties)
View 绑定到 ViewModel,后者委托给 Entity。您现在想要替换支持实体并通知视图刷新以更新到较新的实体。
我建议在 ViewModel 中实现一个索引器,该索引器接收一个字符串(支持属性的名称)。如果需要,可以将 ViewModel 用作缓存,仅在未命中时委托给支持实体。
当您替换实体时,viewModel 会清除其缓存并使用 String.Empty 或 null 触发 NotifyPropertyChanged(在索引器集中)。我今天学到的,indicates all properties have changed。
这样您就不会在 ViewModel 中创建 n 个委托属性。 google search result 表明它至少尝试过一次并成功。
【讨论】: