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?

War es hilfreich?

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!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top