gpt4 book ai didi

wpf - MVVM:依赖注入(inject)和按需创建 ViewModel

转载 作者:行者123 更新时间:2023-12-03 10:26:59 27 4
gpt4 key购买 nike

我正在用 MVVM 和 Ninject 为 DI 捆绑一个小型 WPF 应用程序(第一次)。

为静态 UI 元素创建我的“单实例” View 模型很容易。但我正在努力使用按需创建的 ViewModel,例如关于用户操作,这些操作不能被注入(inject),但必须以某种方式在类本身中创建。

最简单的方法是注入(inject) Ninject 内核或使其全局可用,但我认为这是不好的做法。

在寻找解决方案时,我偶然发现了这两个:

  • ViewModelLocator:我认为它更多地用于“单实例”ViewModels,因为我使用 DataTemplates 将 ViewModel 与 View 连接起来(首先是 ViewModel),我觉得它不是正确的方式,但也许我会将它集成到我的单例(如果使用 WPF DataTemplates 有意义吗?)。
  • 工厂模式:我读到了使用抽象工厂创建对象并将工厂注入(inject)到 ViewModel 中,然后可以使用它来按需创建动态 ViewModel。听起来很容易,这就是为什么我怀疑,如果它只是重​​新定位问题?

  • 所以基本上我试图通过 Ninject 内核在 ViewModel 树的深处获取一个 ViewModel 对象的实例,例如由用户事件触发。
    因为我正在为 Ninject 使用事件代理,所以事件代理只连接到由 Ninject 创建的对象。这就是为什么我需要由 Ninject 创建/注入(inject)的 ViewModel。

    最佳答案

    使用工厂模式。
    工厂本身应该是 composition root 的一部分。正如马克·西曼所描述的那样。

    为简单起见,您可以使用 Ninject.Extensions.Factory .

    关于wpf - MVVM:依赖注入(inject)和按需创建 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38369864/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com