2008-10-17 7 views
11

Je me demande s'il est possible de cascader des convertisseurs lors de l'utilisation de la liaison de données wpf. par exemple. quelque chose commeWPF Convertisseurs de données et cascadeurs?

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

est-il possible à tout ou dois-je créer un convertisseur personnalisé qui combine les fonctionnalités du convertisseur A et B?

Répondre

7

Vous pouvez essayer d'utiliser un MultiBinding et de lier deux fois à la même source, mais avec des conversions différentes sur les liaisons individuelles. Quelque chose comme:

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

Puis, dans « combiningConverter » vous mettez la logique de combiner les valeurs issues des deux liaisons.

18

Vous cherchez peut-être une solution similaire à "Piping Value Converters" de Josh Smith.

Dans son article, il présente les éléments suivants:

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

et utilise ensuite les convertisseurs à valeurs multiples comme suit:

<TextBlock Text="{Binding [email protected], 
      Converter={StaticResource statusDisplayNameGroup}}" /> 

Hope this helps!

Questions connexes