2016-11-17 217 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>();