【问题标题】:MVVM: locating other ViewModelsMVVM:定位其他 ViewModel
【发布时间】:2009-07-16 07:53:38
【问题描述】:

我的 MVVM 应用程序中有大量父详细视图模型。像这样的:

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

等等……

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

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

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

【问题讨论】:

    标签: model-view-controller mvvm


    【解决方案1】:

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

    在您的情况下,我建议使用 CollectionViews 为您的应用程序的不同部分提供 PupilsViewModel(集合)的不同视图。这样,它们在相同的基础数据上进行操作,但应用程序的不同部分可以独立导航它们。

    【讨论】:

    • 好建议!使用 CollectionView 很好地解决了这个问题,谢谢!
    【解决方案2】:

    为什么不使用DataTemplates 来定义哪个视图将绑定到每个模型?在视图上,您​​可以简单地使用绑定到父视图模型的模型属性的ContentPresenter

    我认为它会成功。

    【讨论】:

      猜你喜欢
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-14
      • 2019-01-01
      • 1970-01-01
      相关资源
      最近更新 更多