将转换器绑定到Silverlight中的MultiBinding

时间:2011-12-06 20:41:14

标签: binding silverlight-4.0 dependency-properties multibinding imultivalueconverter

来自博客帖子Silverlight MultiBinding solution for Silverlight 4的代码中的Converter属性不是依赖属性,因此我无法将其与转换器绑定(由于技术原因,必须将其作为一部分进行实例化在应用程序中较早的Unity注入,而不是作为用户控件的一部分的简单静态资源)。

如何修改MultiBinding代码以接受绑定转换器?我试图让它成为依赖属性:

public IMultiValueConverter Converter { get { return (IMultiValueConverter)GetValue(ConverterProperty); } set { SetValue(ConverterProperty, value); } }
public static DependencyProperty ConverterProperty = DependencyProperty.Register("Converter", typeof(IMultiValueConverter), typeof(IMultiValueConverter), null);

但我得到了

  

DependencyProperty System.Windows.Data.IMultiValueConverter。转换器不能设置在类型为...... Binding.MultiBinding。

的对象上

如果这不是一个可行的选项,我如何绑定ConverterParameter属性或获取某些东西来模拟转换器与MultiBinding的绑定?

1 个答案:

答案 0 :(得分:0)

我使用“模拟绑定”路线解决了这个问题,但如果有人有另一个答案,那不是我的偏好。我所做的不是通过依赖注入构建转换器,而是让它使用服务位置来获得它所需的依赖项。通常我更喜欢依赖注入到服务位置。 “服务位置”是将Unity容器存储在应用程序的全局资源中的问题;从那里获得我需要的东西并不困难。