我的MVVM应用程序中有相当多的父级详细信息ViewModel。像这样:
SchoolsViewModel
+- SchoolViewModel
+- LessonViewModel
+- PupilsViewModel
+- PupilViewModel
+- TeacherViewModel
+- PupilsViewModel
+- PupilViewModel
+- LessonsViewModel
+- TeachersViewModel
等等......
此外,单个视图模型可以出现在多个位置,具体取决于用户是按课程还是学生等进行浏览。
您如何允许在不同的父ViewModel之间共享子ViewModel?例如,“Pupil A”将出现在最高级别的PupilsViewModel中,也存在于LessonViewModel中包含的许多PupilsViewModel中。您是否会创建多个引用相同数据模型的PupilViewModel对象?或者以某种方式找到数据模型的现有视图模型?
此问题还有另一个相关问题:MVVM and StructureMap usage
答案 0 :(得分:0)
我建议只有一个Pupil A实例。这样,当用户在一个地方更新一个学生时,该学生会在应用程序的其他地方更新。为了实现这一点,您需要在每个ViewModel上实现INotifyPropertyChanged,但这是MVVM中的标准做法。
在您的情况下,我建议使用CollectionViews将PupilsViewModel(集合)的不同视图提供给应用程序的不同部分。这样他们就可以在相同的底层数据上运行,但应用程序的不同部分可以独立地在它们之间进行导航。
答案 1 :(得分:0)
为什么不使用DataTemplates
来定义哪个视图将绑定到每个模型?在视图上,您只需使用绑定到父视图模型的model属性的ContentPresenter
。
我认为它会起作用。