【发布时间】:2016-11-17 10:42:09
【问题描述】:
我正在使用 C# 6.0、WPF 4.5.2 和 PRISM 架构 6.2.x (Unity)。我正在使用从 Canvas 派生的类。
所以,有一个 MyCanvas 类,它在 UserControl (XAML) 中以如下方式使用:
<Usercontrol [...]>
<mycontrols:MyCanvas [...] />
</Usercontrol>
这很好,但我需要做的是将 Eventtaggregator 注入到 MyCanvas 类的实现中。
XAML 似乎只调用静态构造函数,但我需要存储对 Eventtaggregator 的引用。
我该怎么做?
提前致谢。
【问题讨论】:
-
如果你不能在构造函数中注入你的依赖,你可以使用 ServiceLocator 模式(或反模式?)。
-
确实可以使用 ServiceLocator,但也许您应该考虑使用 DataContext 和视图模型来代替注入。这里有一个相关的问题可能会有所帮助:stackoverflow.com/questions/25366291/…
-
感谢大家的帮助!但是对于 ServiceLocator,问题仍然存在 - 我如何在没有 DI 的情况下使用 ServiceLocator?我想使用 DI。我的理解是,每次出现问题时都偏离模式并没有多大意义。因为如果我这样做了,我根本不会使用任何模式,这意味着我没有任何改进。
标签: c# wpf xaml dependency-injection user-controls