是否可以将MultiBinding的targetType传递给子绑定的转换器?

时间:2018-09-06 05:21:25

标签: c# wpf binding multibinding

我们有一个奇怪的情况,一个用作Binding子元素的MultiBinding需要其Converter的{​​{1}}方法来知道最终数据类型{{1 }}已绑定。

对于具有Convert的常规MultiBinding,如果将其绑定到Binding的{​​{1}}属性,则Converter方法将收到{{1 }}的Text参数中。

但是,即使将相同的TextBlock作为Convert的子元素添加,即使将System.string分配给targetType属性本身,所有子元素{{ 1}}的{​​{1}}的{​​{1}}方法将收到Binding作为MultiBinding的参数,而不是MultiBinding。从技术上讲,这种目标很有意义,因为它们的目标现在是Text,而不是Binding属性。

仍然,我想知道是否可以进行设置,以便将信息传递给子Converter。我想不,但我想如果有人知道,那就是S.O。社区。

1 个答案:

答案 0 :(得分:0)

好的,所以……简短的答案是'不,你不能!'但是,很长的答案是“是的,您需要做一些工作!”

诀窍不是让子绑定处理转换器,而是从MultiBinding自己的转换器中手动调用它。

我实际上在StackOverflow.com上的以下答案中对此进行了详尽的解释:

How to create a DynamicResourceBinding

具体来说,请同时检查ProvideValueWrapperConvert函数。很多评论解释了发生了什么以及为什么。