我们有一个奇怪的情况,用作MultiBinding
子级的Binding
需要其Converter
Convert
方法来知道MultiBinding
绑定到的最终数据类型。
对于带有Converter
的常规Binding
,如果它绑定到TextBlock
的Text
属性,则Convert
方法将在其targetType
参数中接收System.string
。
但是,如果将相同的Binding
添加为MultiBinding
的子项,即使该MultiBinding
分配给Text
属性本身,所有子Binding
的Converter
的Convert
方法都将接收System.object
作为targetType
参数,而不是System.string
。这是有道理的,因为从技术上讲,他们现在的目标是MultiBinding
,而不是Text
属性。
不过,我想知道是否可以设置它,以便将信息传递给子Bindings
.我想不,但我想如果有人知道,那就是SO社区。
好的,所以...简短的回答是"不,你不能!然而,长答案是"是的,你可以,只要做点工作!
诀窍不是让子绑定处理转换器,而是从多重绑定自己的转换器手动调用它。
实际上,我已经在以下答案中 StackOverflow.com 写了一篇很长的解释,说明所有这些是如何工作的:
如何创建动态资源绑定。
具体来说,请检查ProvideValue
和WrapperConvert
函数。很多评论解释了正在发生的事情和原因。