Привязка данных WPF и каскадные преобразователи?
-
03-07-2019 - |
Вопрос
интересно, возможно ли каскадирование преобразователей при использовании привязки данных wpf.например ,что -то вроде
<SomeControl Visibility="{Binding Path=SomeProperty, Converter={StaticResource firstConverter}, Converter={StaticResource secondConverter}}"/>
возможно ли это вообще или мне нужно создать пользовательский конвертер, который сочетает в себе функциональность конвертеров A и B?
Решение
Вы могли бы попробовать использовать Многосвязывающий, и дважды привязать к одному и тому же источнику, но с разными преобразованиями в отдельных привязках.Что -то вроде:
<SomeControl>
<SomeControl.Visibility>
<MultiBinding Converter="{StaticResource combiningConverter}">
<Binding Path="SomeProperty" Converter="{StaticResource firstConverter}"/>
<Binding Path="SomeProperty" Converter="{StaticResource secondConverter}"/>
</MultiBinding>
</SomeControl.Visibility>
</SomeControl>
Затем в 'Комбинирующий преобразователь"вы применяете логику для объединения значений, поступающих из двух привязок.
Другие советы
Возможно, вы ищете решение, похожее на решение Джоша Смита "Преобразователи значений для трубопроводов".
В своей статье он представляет следующее:
<local:ValueConverterGroup x:Key="statusDisplayNameGroup">
<local:IntegerStringToProcessingStateConverter />
<local:EnumToDisplayNameConverter />
</local:ValueConverterGroup>
А затем использует многозначные преобразователи следующим образом:
<TextBlock Text="{Binding XPath=@Status,
Converter={StaticResource statusDisplayNameGroup}}" />
Надеюсь, это поможет!