使用转换器绑定到 的Source
属性时,我遇到了一种特殊行为。Image
看来,如果我使用一个简单Binding
的 aIValueConverter
返回与图像的相对路径相对应的字符串,则一切正常并显示图像。
另一方面,如果我将 aMultiBinding
与 aIMultiValueConverter
返回相同的字符串一起使用,则绑定不起作用,并且此错误消息将显示在 VS2010 输出窗口中:
System.Windows.Data 错误:5:BindingExpression 生成的值对目标属性无效。;Value='' MultiBindingExpression:目标元素是'Image' (Name=''); 目标属性是“源”(类型“ImageSource”)
我发现要让它起作用,我不能返回一个简单的字符串(甚至不能返回一个Uri
)。相反,我必须在我的转换器中创建一个 ImageSource (BitmapImage
实际上是 a )并返回它。
你知道为什么会发生这种奇怪的行为吗?Binding
这是and之间的已知区别MultiBinding
,还是一个错误?
我发现了另一个可能与此相关的 stackoverflow 主题,Alvin 在其中发表了关于解决绑定时间的评论:
我认为 MultiBinding 是在 TextBlock 渲染之后进行的,并且在 TextBlok 渲染之前进行(单个)Binding – Avlin
为了说明这个问题,我写了一个可以下载和测试的小项目。
感谢您的任何见解!