WPF Liaison de données et convertisseurs en cascade?
-
03-07-2019 - |
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?
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!