为什么我的ImultibIndingConverter在使用TextBox.Text时会获得一系列字符串?
-
05-10-2019 - |
题
我正在尝试使用带有转换器的多键点,在该转换器中,儿童元素也具有转换器。
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>
我在这里面临的问题是,每当将其与文本框架一起用来指定文本属性时,我的ImultivalUeconverter实现都会获得字符串的对象集合,而不是Ivalueconverter返回的类。看来ToString()方法是根据内部转换器的结果调用的,并传递给ImultivalUeconverter。如果用于指定标签的内容属性,则一切都很好。
在我看来,该框架假设返回类型将是字符串,但是为什么呢?我可以看到这是用于多点的,因为它应该产生与textblock.text兼容的结果,但是为什么在多键点内的绑定也是如此?
如果我从内部绑定元素中删除转换器,则返回本地类型。在我的情况下,字符串和int。
解决方案
您本地化的MessageParameTerconverter转换器的targetType参数可能是System.String。这是因为绑定的目标类型是从多接口继承的,并且多键点的目标型是系统。String,因为textblock.text是字符串属性。
有关类似问题,请参见以下文章: 多值转换器,值转换器和错误的目标类型的情况
根据Microsoft Connect,这已在WPF 4.0中修复。看: Microsoft Connect
以上文章还解释了解决方法。
不隶属于 StackOverflow