Я пытаюсь использовать 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. Если используется для указания свойства Content метки, все хорошо.
Мне кажется, что фреймворк предполагает, что возвращаемый тип будет строковым, но почему? Я вижу это для MultiBinding, так как он должен дать результат, совместимый с TextBlock.Text, но почему это также относится к Bindings внутри MultiBinding?
Если я удалю конвертер из внутренних элементов Binding, будут возвращены собственные типы. В моем случае строка и int.