WPF привязка данных и каскадные преобразователи? - PullRequest
11 голосов
/ 17 октября 2008

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

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

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

Ответы [ 2 ]

18 голосов
/ 17 октября 2008

Возможно, вы ищете решение, похожее на « Преобразователи значений трубопроводов » Джоша Смита.

В своей статье он представляет следующее:

<local:ValueConverterGroup x:Key="statusDisplayNameGroup">
  <local:IntegerStringToProcessingStateConverter  />
  <local:EnumToDisplayNameConverter />
</local:ValueConverterGroup> 

А затем использует многозначные преобразователи следующим образом:

<TextBlock Text="{Binding XPath=@Status, 
             Converter={StaticResource statusDisplayNameGroup}}" />

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

7 голосов
/ 17 октября 2008

Вы можете попытаться использовать 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 ' вы помещаете логику для объединения значений, поступающих из двух привязок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...