2008-10-17 29 views
11

wpf veritabanını kullanırken dönüştürücüleri kaskatlamak mümkün olup olmadığını merak ediyorum. , ör.WPF Veri bağlama ve basamaklı Çeviriciler?

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

gibi bir şey hepsi mevcuttur veya i dönüştürücü A ve B işlevselliğini birleştiren özel bir dönüştürücü oluşturmak gerekiyor?

cevap

7

MultiBinding kullanmayı ve aynı kaynağa iki kez bağlamayı, ancak tek bağlamalar üzerinde farklı dönüştürmelerle deneyebilirsiniz. Bir şey gibi: 'combiningConverter' in Ardından

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

iki bağlamaları gelen değerleri birleştirmek için mantık koydu.

18

Josh Smith'in "Piping Value Converters" ile benzer bir çözümü arıyor olabilirsiniz.

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

Sonra şöyle çok değer dönüştürücüleri kullanır: yazısında

, o aşağıdaki sunuyor bu yardımcı olur

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

Umut!