Подтвердить что ты не робот

WPF Databinding и каскадные преобразователи?

Интересно, возможно ли каскадное преобразование при использовании привязки данных wpf. например что-то вроде

<SomeControl Visibility="{Binding Path=SomeProperty, Converter={StaticResource firstConverter}, Converter={StaticResource secondConverter}}"/>

возможно вообще или мне нужно создать собственный конвертер, который объединяет функции конвертера A и B?

4b9b3361

Ответ 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}}" />

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