2012-02-17 48 views
0

我有一个Silverlight应用程序,其中只有少数控件使用MVVM。我没有多少时间将所有控件移动到mvvm,但我需要在该控件中注入一些服务。使用UnityContainer通过代码隐藏将依赖注入到视图中

因为某些控件被宣布他们在XAML像创建:

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

我不能看到一个选项,使用构造器注入到注入依赖。

但也许我错了,这就是为什么我发布这个问题。

有没有解决方案可以做到这一点?

My CompositionRoot位于App类的ApplicationStartup方法中。

回答

2

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

您可以删除从XAML元素的创建和看看

  • Caliburn.Micro允许您根据您的ViewModels工作,为您创建的视图(视图模型第一),或者它可以让你一起工作您的用户界面并解析视图模型(首先查看)。

  • PRISM允许您撰写你的UI,并把元素的区域,同时使您能够创建使用DI对象。

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