我正在尝试将 MultiBinding 与转换器一起使用,其中子元素也有转换器。
XAML 看起来像这样:
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource localizedMessageConverter}" ConverterParameter="{x:Static res:Resources.RecordsFound}" >
<Binding Converter="{StaticResource localizedMessageParameterConverter}" ConverterParameter="ALIAS" Path="Alias" Mode="OneWay" />
<Binding Converter="{StaticResource localizedMessageParameterConverter}" ConverterParameter="COUNT" Path="Count" Mode="OneWay" />
</MultiBinding>
</TextBlock.Text>
我在这里面临的问题是,每当它与 TextBlock 一起使用来指定 Text 属性时,我的 IMultiValueConverter 实现都会获取字符串的对象集合,而不是 IValueConverter 返回的类。似乎对内部转换器的结果调用了 ToString() 方法并传递给 IMultiValueConverter。如果用于指定 Label 的 Content 属性,则一切正常。
在我看来,框架假设返回类型将是字符串,但为什么呢?我可以在 MultiBinding 中看到这一点,因为它应该产生与 TextBlock.Text 兼容的结果,但为什么 MultiBinding 中的 Bindings 也会出现这种情况?
如果我从内部 Binding 元素中删除转换器,则会返回本机类型。在我的情况下,字符串和 int。