Вопрос

интересно, возможно ли каскадирование преобразователей при использовании привязки данных 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}}" />

Надеюсь, это поможет!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top