我的 MVVM 应用程序中有相当多的父详细视图模型。像这样的东西:
SchoolsViewModel
+- SchoolViewModel
+- LessonViewModel
+- PupilsViewModel
+- PupilViewModel
+- TeacherViewModel
+- PupilsViewModel
+- PupilViewModel
+- LessonsViewModel
+- TeachersViewModel
等等...
此外,单个视图模型可以出现在多个地方,具体取决于用户是按课程浏览还是按学生浏览等。
每个子视图模型都是由父视图模型创建的,因此许多视图模型需要传入子视图模型的依赖关系。例如 SchoolsViewModel 的构造函数可能是:
SchoolsViewModel(ISchoolsRepository schoolsRepository,
ILessonsRepository lessonsRepository,
IPupilsRepository pupilsRepository,
ITeachersRepository teachersRepository,
...)
现在,使所有这些都易于管理的常用方法是使用 DI 框架(例如 StructureMap)将所有必需的参数传递给视图模型。但是,因为在这种情况下,我的应用程序通常只会创建 SchoolsViewModel,所以用途有限。
我的第一个问题是,在这种情况下,您会让 SchoolsViewModel 将每个依赖项传递给每个子视图模型,还是让每个视图模型使用 ObjectFactory.GetInstance() 来创建子视图模型?也许通过一个工厂类来抽象出对 DI 框架的依赖?
还有一个与此相关的问题:MVVM: locating other ViewModels
编辑:我已经为此开了一个赏金,因为我想要更多的意见。