MVVM:查找其他ViewModel

时间:2009-07-16 07:53:38

标签: model-view-controller mvvm

我的MVVM应用程序中有相当多的父级详细信息ViewModel。像这样:

SchoolsViewModel
  +- SchoolViewModel
      +- LessonViewModel
          +- PupilsViewModel
              +- PupilViewModel
          +- TeacherViewModel
      +- PupilsViewModel
          +- PupilViewModel
              +- LessonsViewModel
      +- TeachersViewModel

等等......

此外,单个视图模型可以出现在多个位置,具体取决于用户是按课程还是学生等进行浏览。

您如何允许在不同的父ViewModel之间共享子ViewModel?例如,“Pupil A”将出现在最高级别的PupilsViewModel中,也存在于LessonViewModel中包含的许多PupilsViewModel中。您是否会创建多个引用相同数据模型的PupilViewModel对象?或者以某种方式找到数据模型的现有视图模型?

此问题还有另一个相关问题:MVVM and StructureMap usage

2 个答案:

答案 0 :(得分:0)

我建议只有一个Pupil A实例。这样,当用户在一个地方更新一个学生时,该学生会在应用程序的其他地方更新。为了实现这一点,您需要在每个ViewModel上实现INotifyPropertyChanged,但这是MVVM中的标准做法。

在您的情况下,我建议使用CollectionViews将PupilsViewModel(集合)的不同视图提供给应用程序的不同部分。这样他们就可以在相同的底层数据上运行,但应用程序的不同部分可以独立地在它们之间进行导航。

答案 1 :(得分:0)

为什么不使用DataTemplates来定义哪个视图将绑定到每个模型?在视图上,您​​只需使用绑定到父视图模型的model属性的ContentPresenter

我认为它会起作用。