【发布时间】:2010-10-28 09:36:55
【问题描述】:
我有一个 IValueConverter 实现类,我需要使用我的 DI 容器 (Ninject) 注入它。
问题是,在 XAML 中,没有直接明显的方法来控制 Converter 对象的实例化。
所以我的 XAML 包含这样的一行:
Source="{Binding Path=CurrentMessage, Converter={StaticResource ImagePathConverter}}"
ImagePathConverter 将在哪里为我创建。
我想我可以创建一个“服务定位器”静态类并调用它来解决我的依赖关系并将 StaticResource 更改为属性“MyServiceLocator.TheImageConverter”,但这让我想吐。
我希望这个问题可以通过一些专门针对所提供代码的 sn-ps 代码来回答 - 或许还有一个示例的支持链接。不仅仅是建议去某个地方看看。
另外,非常重要的是,假设 XAML 没有代码隐藏 - 我不能使用它。我正在创建一个 skin 并且不希望后面有代码。所以我不能在类构造函数中设置类变量并引用它。也许这不合理,我还不确定。
【问题讨论】:
-
我很想知道您为什么需要使用 DI 解决转换器..?
-
因为转换器使用 (depends) 格式化类,该类具有它自己的依赖关系,并且每个依赖关系也可能具有依赖关系。这就是 DI 的重点——为我连接所有这些依赖项。我想知道是否有很多人只是用它来新建对象而没有意识到主要目的?
-
如果我理解正确,您实际上并不想将 Converter 本身注入另一个类,但您想将依赖项注入转换器,对吧?
标签: wpf xaml dependency-injection