我们有一个奇怪的例子,用作Binding
的孩子的MultiBinding
需要它的Converter
s Convert
方法来知道MultiBinding
所绑定的最终数据类型。
对于带有Binding
的常规Converter
,如果它与Text
的TextBlock
属性绑定,Convert
方法将在其System.string
论证中接收targetType
。
然而,如果相同的Binding
被添加为MultiBinding
的孩子,即使MultiBinding
被分配给Text
属性本身,所有孩子Binding
的Converter
的Convert
方法将接收System.object
作为targetType
论证,而不是System.string
。这种方式是有道理的,因为从技术上讲,他们的目标现在是MultiBinding
,而不是Text
属性。
不过,我想知道它是否可以设置,以便将信息传递给孩子Bindings
。我想不,但我想如果有人知道,那将是S.O.社区。
好的,所以......简短的回答是“不,你不能!”然而,长期的答案是'是的,你可以,有点工作!'
诀窍是让孩子Binding处理转换器,而不是手动从MultiBinding自己的转换器中调用它。
我在下面的答案中实际上已经在StackOverflow.com上写了一篇很长的解释:
How to create a DynamicResourceBinding。
具体来说,看看ProvideValue
和WrapperConvert
函数。大量的评论解释了发生了什么以及为什么。