将ViewModel属性注入ValueConverter

时间:2012-01-20 16:39:01

标签: wpf

我发现的所有ValueConverter示例都使用了Resources来创建ValueConverter实例。但我的ValueConverter使用了一些由IoC框架解决的依赖项。所以我想将Binding Converter属性设置为我的ViewModel的一些属性,可以通过DataContext访问它。我试图这样做,但得到一个例外,告诉我无法将任何东西绑定到绑定的Converter属性。

1 个答案:

答案 0 :(得分:2)

你不能绑定Binding.Converter,因为它不是依赖属性,但你可以让转换器继承自DependencyObject并在其上声明dependency properties,然后你可以绑定它们。 / p>

但是请注意,您可能需要跳出一些箍来获得您想要的东西,因为您将无法绑定到DataContext。您可能无法使用ElementName,因为转换器没有名称范围。一种常见的解决方法是使用Binding.Sourcex:Reference使用正确的DataContext定位对象。确保不要声明在目标对象的可视化树中实例化转换器,否则x:Reference将抛出周期性依赖性错误(目标对象的Resources都没问题。)