使用UnityContainer通过代码隐藏将依赖项注入视图

时间:2012-02-17 08:26:41

标签: silverlight-4.0 dependency-injection unity-container

我有一个Silverlight应用程序,其中只有少数控件使用MVVM。我没有太多时间将所有控件移动到mvvm,但我需要在控件中注入一些服务。

因为通过在XAML中声明它们来创建一些控件,如:

<UserControl>
<Grid>
<MyControlWithoutMVVM/>
</Grid>
</UserControl>

我看不到使用Constructor Injection注入依赖项的选项。

但也许我错了,这就是我发布这个问题的原因。

有没有解决办法呢?

我的CompositionRoot在App类的ApplicationStartup方法中。

1 个答案:

答案 0 :(得分:2)

如果在XAML代码中放置元素,则无法使用构造函数注入,因为您无法控制这些对象的实例化。

您可以从XAML中删除元素创建并查看

  • Caliburn.Micro允许您根据视图模型工作并为您创建视图(首先是viewmodel),或者它允许您使用UI并解析视图模型(首先查看)。

  • PRISM允许您组合UI并将元素放在区域中,同时使您能够使用DI创建对象。

或者您可以删除DI并切换到类似ServiceLocator的方法(which I cannot recommend)。