使用 UnityContainer 通过代码隐藏将依赖项注入视图
我有一个 Silverlight 应用程序,其中只有少数控件使用 MVVM。我没有太多时间将所有控件移至 mvvm,但我需要向该控件注入一些服务。
因为某些控件是通过在 XAML 中声明它们来创建的,例如:
<UserControl>
<Grid>
<MyControlWithoutMVVM/>
</Grid>
</UserControl>
我看不到使用构造函数注入来注入依赖项的选项。
但也许我错了,这就是我发布这个问题的原因。
有什么解决办法吗?
我的 CompositionRoot 位于 App 类的 ApplicationStartup 方法中。
I have a Silverlight application, where only few controls use MVVM. I haven't much time to moved all controls to mvvm, but I need inject some services into that controls.
Because some controls are being created by declaring them in XAML like:
<UserControl>
<Grid>
<MyControlWithoutMVVM/>
</Grid>
</UserControl>
I can't see an option to inject dependency using Constructor Injection.
But maybe I'm wrong and this is why I'm posting that question.
Is there any solution to do that?
My CompositionRoot is in ApplicationStartup methon on the App class.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果将元素放入 XAML 代码中,则无法使用构造函数注入,因为您无法控制这些对象的实例化。
您可以从 XAML 中删除元素创建,并查看
或
或者您可以放弃 DI 并切换到类似 ServiceLocator 的方法(我不推荐这种方法< /a>)。
If you put elements in your XAML code there is no way you can use constructor injection because you don't control the instantiation of these objects.
You can either remove the elements creation from the XAML and have a look at
or
or you can drop DI and switch to a ServiceLocator-like approach (which I cannot recommend).