如何在WPF中为用户控件注入依赖项

and*_*nov 13 .net wpf wpf-controls

在WPF中透明地将依赖项(使用IOC容器)注入用户控件的最佳方法是什么?

我假设用户控件是窗口或其他用户控件的XAML的一部分.我认为父母(无论是谁)不应对此负责.从父级手动注入依赖项的解决方案看起来不够干净.我希望避免明确管理组件的依赖关系,因为它消除了IOC的想法.

是否在创建逻辑树时引发任何事件,以便我可以拦截它并注入我的依赖项?

编辑:依赖我也意味着ViewModel,Controller,Presenter(使用的模式)

谢谢,安德烈

Mar*_*ann 9

处理WPF中的依赖关系的最佳方法是遵循MVVM模式.

简而言之,您不会将依赖项直接注入用户控件(View),而是注入其DataContext(ViewModel).

  • 那么如何将 ViewModel 注入用户控件呢? (5认同)
  • 当然,但 ViewModel 只是依赖关系的一个例子 (4认同)
  • 来自家长控制?这意味着父应该能够为用户控制创建 ViewModel(使用对容器或抽象工厂的访问)。我也不喜欢父母照顾孩子依赖的想法 - 这违反了 IoC 的想法。无论如何,这实际上是我现在所做的,但正在寻找更好的方法。 (2认同)
  • ViewModel 是我的视图的实现细节,理想情况下没有人应该知道它的存在(包括控件父级的 ViewModel)。我不想每次将控件放入 XAML 时都担心初始化 control.ViewModel 。理想情况下... (2认同)

and*_*nov -3

解决该问题的可能方法之一是采用“ViewModel First”方法并使用约定优于配置。

  • 这篇文章如何充分回答这个问题?使用 viewmodel-first 与为用户控件指定 ctor 参数有什么关系? (3认同)