WPF Databinding и каскадные преобразователи?
Интересно, возможно ли каскадное преобразование при использовании привязки данных wpf.
например что-то вроде
<SomeControl Visibility="{Binding Path=SomeProperty, Converter={StaticResource firstConverter}, Converter={StaticResource secondConverter}}"/>
возможно вообще или мне нужно создать собственный конвертер, который объединяет функции конвертера A и B?
Ответы
Ответ 1
Вы можете попробовать использовать MultiBinding и дважды привязать к одному и тому же источнику, но с разными преобразованиями в одиночных привязках. Что-то вроде:
<SomeControl>
<SomeControl.Visibility>
<MultiBinding Converter="{StaticResource combiningConverter}">
<Binding Path="SomeProperty" Converter="{StaticResource firstConverter}"/>
<Binding Path="SomeProperty" Converter="{StaticResource secondConverter}"/>
</MultiBinding>
</SomeControl.Visibility>
</SomeControl>
Затем в 'combiningConverter' вы помещаете логику для объединения значений, исходящих из двух привязок.
Ответ 2
Возможно, вы ищете решение, подобное Josh Smith " Преобразователи стоимости трубопроводов".
В своей статье он представляет следующее:
<local:ValueConverterGroup x:Key="statusDisplayNameGroup">
<local:IntegerStringToProcessingStateConverter />
<local:EnumToDisplayNameConverter />
</local:ValueConverterGroup>
И затем использует многозначные преобразователи следующим образом:
<TextBlock Text="{Binding [email protected],
Converter={StaticResource statusDisplayNameGroup}}" />
Надеюсь, это поможет!