2008-10-17 15 views
11

मुझे आश्चर्य है कि wpf डेटाबेस का उपयोग करते समय कनवर्टर्स को कैस्केड करना संभव है। उदा।डब्ल्यूपीएफ डाटाबेसिंग और कैस्केडिंग कन्वर्टर्स?

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

क्या यह संभव है या क्या मुझे कस्टम कनवर्टर बनाना है जो कनवर्टर ए और बी की कार्यक्षमता को जोड़ता है?

उत्तर

7

आप मल्टीबाइंडिंग का उपयोग करने का प्रयास कर सकते हैं, और एक ही स्रोत पर दो बार बांध सकते हैं, लेकिन सिंगल बाइंडिंग पर अलग-अलग रूपांतरणों के साथ। कुछ की तरह:

<SomeControl> 
    <SomeControl.Visibility> 
     <MultiBinding Converter="{StaticResource combiningConverter}"> 
      <Binding Path="SomeProperty" Converter="{StaticResource firstConverter}"/> 
      <Binding Path="SomeProperty" Converter="{StaticResource secondConverter}"/> 
     </MultiBinding> 
    </SomeControl.Visibility> 
</SomeControl> 
फिर ' combiningConverter' में

आप मूल्यों दो बाइंडिंग से आने वाले गठबंधन करने के लिए तर्क डाल दिया।

18

आप जोश स्मिथ के "Piping Value Converters" के समान समाधान ढूंढ रहे हैं।

अपने लेख में उन्होंने निम्नलिखित प्रस्तुत करता है:

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

और फिर इस रूप में बहु मूल्य कन्वर्टर्स का उपयोग करता है:

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

आशा इस मदद करता है!