我在我的MVVM应用程序中有相当多的parent-detail ViewModels。事情是这样的:MVVM和StructureMap使用
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
编辑:我已经打开了这个赏金,因为我想更多的意见。
但我恐怕这太复杂了......最好有一个教育工厂结合所有的工厂。 – alex2k8 2009-07-23 13:16:42