嵌套视图模型上的IOC容器

时间:2017-11-14 20:48:39

标签: wpf mvvm inversion-of-control ioc-container

我正在开发一个WPF应用程序,试图尽可能地遵守MVVM模式,包括DI和IoC。 该应用程序的结构为" ViewModel首先"视觉层次结构包含以下内容:

 MainView
 |-Login View
 |-Content View
   |-Content A
   |-Content B
   |-Content x

每个视图都由其VM引用; " MainViewModel"和" ContentViewModel"公开引用子VM的属性以控制内部元素的导航。 那说"内容A","内容B"和类似的项目依赖于我想通过DI管理的各种服务。

我使用UnityContainer并在" OnStartup"中注册所有依赖项。但是我的问题出现了:因为我不想使用ServiceLocator,我如何制作"子视图模型"知道容器?我很确定我在理论方面做错了什么,但我还没有在网上找到任何参考资料。 我在网上找到的每个教程/示例只是在容器中注册依赖项,然后立即解析模型。

1 个答案:

答案 0 :(得分:1)

由于父视图模型可以访问容器并负责创建任何子视图模型,因此当您在父视图模型中实例化它们时,可以简单地为子视图模型注入容器的引用:

0b...

这是构造函数依赖注入的典型示例。