Wpf主视图模型与许多其他视图模型依赖关系
我正在开发一个wpf应用程序,我的主视图模型如下所示。如您所见,其他VM是通过ctor注入的。我需要这样做,因为所有的视图模型都需要填充主菜单 但我觉得这似乎不对。起初,由于应用程序很简单,我没有感觉到任何问题,但随着应用程序的增长,在我看来,ctor参数的数量在增长,这是不对的。在我看来,似乎违反了单一责任原则Wpf主视图模型与许多其他视图模型依赖关系,wpf,mvvm,dependency-injection,Wpf,Mvvm,Dependency Injection,我正在开发一个wpf应用程序,我的主视图模型如下所示。如您所见,其他VM是通过ctor注入的。我需要这样做,因为所有的视图模型都需要填充主菜单 但我觉得这似乎不对。起初,由于应用程序很简单,我没有感觉到任何问题,但随着应用程序的增长,在我看来,ctor参数的数量在增长,这是不对的。在我看来,似乎违反了单一责任原则 public MultiControllerHomeViewModel ( MultiControllerViewModel MCvm, VigilantProces
public MultiControllerHomeViewModel
(
MultiControllerViewModel MCvm,
VigilantProcessListViewModel VPLvm,
MailSettingsViewModel MSvm,
DropboxSettingsViewModel DBSvm,
PushbulletSettingsViewModel PBSvm,
GeneralHelpViewModel GHvm,
LoginViewModel Lvm
)
{...}
有人能告诉我如何处理这个问题吗?你可以创建一个
MainMenuViewModel
,它唯一的任务就是为主菜单提供数据。MainMenuViewModel
将所有其他viewmodels作为构造函数参数,但由于它没有其他任何内容,因此不会违反单一责任原则
根据您的代码,您的
MultiControllerHomeViewModel
可能必须将MainMenuViewModel
作为构造函数参数。在我看来,就单一责任原则而言,您做的事情完全是“正确的”,如果MCHVM类的唯一职责是聚合许多viewmodels。但是,如果它有其他角色要执行,那么您可能希望将该类拆分为较小的类,每个类执行一个角色,并且无疑需要较少的子VM提供。这很有意义。谢谢