2009-06-18 8 views
5

मैं MultiBinding StringFormat के साथ काम करने के लिए मिल कर सकते हैं:एकल बाध्यकारी के साथ स्ट्रिंगफॉर्मेट का उपयोग करने के लिए सही वाक्यविन्यास क्या है?

<TextBlock.Text> 
    <MultiBinding StringFormat="{}{0} {1} (hired on {2:MMM dd, yyyy})"> 
     <Binding Path="FirstName"/> 
     <Binding Path="LastName"/> 
     <Binding Path="HireDate"/> 
    </MultiBinding> 
</TextBlock.Text> 

लेकिन एक बाध्यकारी के लिए सही सिंटैक्स क्या है? निम्नलिखित काम नहीं करता है (हालांकि यह this example रूप में एक ही वाक्य रचना हो रहा है):

<TextBlock Text="{Binding Path=HiredDate, StringFormat='{MMM dd, yyyy}'}"/> 

उत्तर:

धन्यवाद मैट, मैं क्या आवश्यकता के अनुरूप अपने दो जवाब का एक संयोजन था, इस महान काम करता है :

<TextBlock Text="{Binding Path=HiredDate, 
    StringFormat='Hired on {0:MMM dd, yyyy}'}"/> 

उत्तर

10

आप क्योंकि आप उन्हें एक प्लेसहोल्डर के रूप में उपयोग नहीं कर रहे हैं (जैसे आप उपयोग करना चाहते हैं, अपने उदाहरण में प्रारूप स्ट्रिंग से बाहर घुंघराले ब्रेसिज़ छोड़ना चाहते हैं "{0}" String.Format में ())।

तो:

<TextBlock Text="{Binding Path=HiredDate, StringFormat='Hired on \{0\}'}"/> 
+1

आप नहीं लगता कि:

<TextBlock Text="{Binding Path=HiredDate, StringFormat='MMM dd, yyyy'}"/> 

आप स्ट्रिंग के अंदर कहीं न कहीं प्लेसहोल्डर मूल्य का संदर्भ लेना चाहते हैं, तो आप एक बैकस्लैश के साथ घुंघराले ब्रेसिज़ बचने करके कर सकते हैं आपको अपने दूसरे उदाहरण पर बैकस्लाश की आवश्यकता है, यह उनके बिना काम करता है, या वे किसी अन्य कारण से हैं। –

+0

अजीब। जब मैंने बैकस्लाश छोड़े हैं तो मैंने अतीत में संकलन त्रुटियां की हैं। खुशी है कि यह आपके लिए काम करता है! –

+0

मुझे पता चला है कि यदि स्ट्रिंग '{0} कुछ पाठ' जैसी ब्रेस से शुरू होती है तो आपको ब्रेसिज़ से बचने की आवश्यकता होती है। यदि कोई अन्य चरित्र (एक स्थान की तरह) पहले आता है, तो आपको उनसे बचने की आवश्यकता नहीं है। – Tod

संबंधित मुद्दे

 संबंधित मुद्दे