MVVM:定位等的ViewModels(MVVM: locating other ViewModel

2019-09-19 04:06发布

我在我的MVVM应用相当多家长详细的ViewModels的。 事情是这样的:

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

等等...

另外,一个单一的视图模型可以出现在一个以上的地方,这取决于用户是否由课或瞳孔等浏览

你将如何允许不同父的ViewModels之间的孩子的ViewModels的共享? 例如,“光瞳中的”将存在于最高级别的PupilsViewModel以及在一些包含LessonViewModels内PupilsViewModels的。 你创建指的是相同的数据模型的多个PupilViewModel对象? 或以某种方式找到该数据模型中的现有视图模型?

这个问题有一个相关的问题: MVVM和StructureMap使用

Answer 1:

我建议只有一个多空A的实例的方式,当用户更新在一个地方瞳孔,瞳孔是在应用程序中其他地方进行更新。 为了做到这一点,你需要实现每个视图模型INotifyPropertyChanged的,但是这是在MVVM标准做法。

在你的情况,我建议使用CollectionViews提供您PupilsViewModel(集合)到应用程序的不同部分的不同意见。 这样,他们在操作上相同的底层数据,但应用程序的不同部分可以独立对它们进行导航。



Answer 2:

为什么不使用DataTemplates定义其观点会结合每个模型? 而就的意见,你可以简单地使用ContentPresenter绑定于父视图模型的模型属性。

我认为它会做的伎俩。



文章来源: MVVM: locating other ViewModels