Question

Je me demande s’il est possible de mettre en cascade les convertisseurs lors de l’utilisation de la liaison de données wpf. par exemple. quelque chose comme

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

est-ce possible ou dois-je créer un convertisseur personnalisé combinant les fonctionnalités des convertisseurs A et B?

Était-ce utile?

La solution

Vous pouvez essayer d'utiliser une liaison multiple et lier deux fois à la même source, mais avec des conversions différentes sur les liaisons simples. 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>

Ensuite, dans combineConverter , vous indiquez la logique permettant de combiner les valeurs provenant des deux liaisons.

Autres conseils

Vous recherchez peut-être une solution similaire à celle de Josh Smith & Convertisseurs de valeur de raccordement ".

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 multi-valeurs comme suit:

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

J'espère que ça aide!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top