2016-11-17 218 views
1

我正在使用C#6.0,WPF 4.5.2和PRISM-architecture 6.2.x(Unity)。我使用的是从Canvas派生的类。依赖注入UserControl

所以,有一类MyCanvas,其在用户控件(XAML)使用方式:

<Usercontrol [...]> 
<mycontrols:MyCanvas [...] /> 
</Usercontrol> 

这工作得很好,但我需要做的,就是注入Eventaggregator到MyCanvas类的实现。

XAML似乎只调用静态构造函数,但我需要存储对Eventaggator的引用。

我该怎么做?

在此先感谢。

+0

如果无法在构造函数中注入依赖项,可以使用ServiceLocator模式(或反模式?)。 – 3615

+0

事实上,你可以使用ServiceLocator,但也许你应该考虑使用DataContext和viewmodels来进行注入。这里有一个相关的问题可以帮助:http://stackoverflow.com/questions/25366291/how-to-handle-dependency-injection-in-a-wpf-mvvm-application – LeBaptiste

+0

感谢您的帮助家伙!但是使用ServiceLocator时,问题仍然存在 - 我如何在没有DI的情况下使用ServiceLocator?我想用DI。我的理解是,每当有问题出现时,就会变得模糊不清。因为如果我这样做了,我根本不会使用任何模式,这意味着我没有任何改进。 – Elex

回答

1

尝试使用服务定位器。

var eventAgg = ServiceLocator.Current.GetInstance<IEventAggregator>();