WPF-Datenbindung und Cascading Konverter?
-
03-07-2019 - |
Frage
Ich frage mich, ob es möglich ist, Wandler kaskadieren, wenn wpf Datenbindung verwenden. z.B. so etwas wie
<SomeControl Visibility="{Binding Path=SomeProperty, Converter={StaticResource firstConverter}, Converter={StaticResource secondConverter}}"/>
ist es möglich, überhaupt oder muss ich einen benutzerdefinierten Konverter erstellen, die die Funktionalität des Wandlers A und B kombiniert?
Lösung
Sie könnten versuchen, ein Multibinding verwenden , und binden zweimal auf die gleiche Quelle, aber mit unterschiedlichen Konvertiten auf den einzelnen Bindungen. So etwas wie:
<SomeControl>
<SomeControl.Visibility>
<MultiBinding Converter="{StaticResource combiningConverter}">
<Binding Path="SomeProperty" Converter="{StaticResource firstConverter}"/>
<Binding Path="SomeProperty" Converter="{StaticResource secondConverter}"/>
</MultiBinding>
</SomeControl.Visibility>
</SomeControl>
Dann in ' combiningConverter ' Sie die Logik setzen die Werte zu kombinieren, von den beiden Bindungen kommen.
Andere Tipps
Sie können für eine Lösung ähnlich wie Josh Smith suchen „ Piping Wertwandler “.
In seinem Artikel stellt er folgende Möglichkeiten:
<local:ValueConverterGroup x:Key="statusDisplayNameGroup">
<local:IntegerStringToProcessingStateConverter />
<local:EnumToDisplayNameConverter />
</local:ValueConverterGroup>
Und dann verwendet, um die Mehrwertwandler wie folgt:
<TextBlock Text="{Binding XPath=@Status,
Converter={StaticResource statusDisplayNameGroup}}" />
Hope, das hilft!