Wpf主视图具有许多其他视图模型依赖关系的模型

时间:2016-09-23 06:40:30

标签: wpf mvvm dependency-injection

我正在开发一个wpf应用程序,我的主视图模型ctor看起来像这样。如您所见,其他VM通过ctor注入注入。我需要这样做,因为填充主菜单需要所有的视图模型。

但这对我来说似乎不对。最初,由于应用程序很简单,我没有感觉到任何问题,但随着应用程序的增长,在我看来,ctor参数的数量正在增长,这是不对的。在我看来,违反了单一责任原则

public MultiControllerHomeViewModel
(
    MultiControllerViewModel MCvm, 
    VigilantProcessListViewModel VPLvm, 
    MailSettingsViewModel MSvm, 
    DropboxSettingsViewModel DBSvm, 
    PushbulletSettingsViewModel PBSvm, 
    GeneralHelpViewModel GHvm, 
    LoginViewModel Lvm
)
{...}

有人可以建议我如何处理这个问题吗?

1 个答案:

答案 0 :(得分:3)

您可以创建MainMenuViewModel,其唯一的工作就是为主菜单提供数据。 MainMenuViewModel将所有其他视图模型作为构造函数参数,但由于它不是任何其他视图模型,因此不会违反单一责任原则。

根据您的代码,MultiControllerHomeViewModel可能必须将MainMenuViewModel作为构造函数参数。