2008-10-17 5 views
11

Ich frage mich, ob es möglich ist, Konverter zu kaskadieren, wenn wpf Datenbindung verwendet wird. z.B. so etwas wieWPF Databinding und Cascading Converter?

<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?

Antwort

7

Sie könnten versuchen, eine MultiBinding zu verwenden und zweimal an die gleiche Quelle zu binden, aber mit verschiedenen Konvertierungen für die einzelnen Bindungen. 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‘ setzen Sie die Logik die Werte zu kombinieren, von den beiden Bindungen kommen.

18

Möglicherweise suchen Sie nach einer ähnlichen Lösung wie Josh Smiths "Piping Value Converters".

In seinem Artikel stellt er folgendes:

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

Und dann verwendet, um die Mehrwertwandler wie folgt:

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

hoffe, das hilft!