【发布时间】:2012-01-14 10:42:57
【问题描述】:
博客文章代码中的Converter 属性Silverlight MultiBinding solution for Silverlight 4 不是依赖属性,因此我无法将其与转换器绑定(出于技术原因,必须在前面将其作为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 的绑定?
【问题讨论】:
-
为什么不将您的数据也绑定到 MultiBinding?那么你在多值转换器中有数据,如果你的数据发生变化,你的转换器也会触发。
-
@punker76,我不确定我是否关注你。例如,我有多个视图模型的 3 个属性,但它们必须通过转换器运行才能在视图中正确格式化。转换器本身不能(据我所知)是静态资源,因为 它 将依赖项注入到其构造函数中。
-
嗯,很遗憾我还没明白你为什么要绑定转换器?
-
@punker76,因为它足够复杂,无法创建静态资源。转换器使用服务来查找信息,以便在格式化时显示“看起来正确”的最终结果。
标签: binding silverlight-4.0 dependency-properties multibinding imultivalueconverter