我正在用 MVVM 和 Ninject 为 DI 捆绑一个小型 WPF 应用程序(第一次)。
为静态 UI 元素创建我的“单实例” View 模型很容易。但我正在努力使用按需创建的 ViewModel,例如关于用户操作,这些操作不能被注入(inject),但必须以某种方式在类本身中创建。
最简单的方法是注入(inject) Ninject 内核或使其全局可用,但我认为这是不好的做法。
在寻找解决方案时,我偶然发现了这两个:
所以基本上我试图通过 Ninject 内核在 ViewModel 树的深处获取一个 ViewModel 对象的实例,例如由用户事件触发。
因为我正在为 Ninject 使用事件代理,所以事件代理只连接到由 Ninject 创建的对象。这就是为什么我需要由 Ninject 创建/注入(inject)的 ViewModel。
最佳答案
使用工厂模式。
工厂本身应该是 composition root 的一部分。正如马克·西曼所描述的那样。
为简单起见,您可以使用 Ninject.Extensions.Factory .
关于wpf - MVVM:依赖注入(inject)和按需创建 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38369864/