मैं WPF में शॉर्ट फॉर्मेट नाम के स्ट्रिंग प्रारूप का उपयोग करना चाहूंगा।
मैंने कुछ इस तरह की कोशिश की:
<TextBlock Text="{Binding Date, StringFormat='Short Date'}" />
यह कैसे करना है?
जवाबों:
इसे इस्तेमाल करे:
<TextBlock Text="{Binding PropertyPath, StringFormat=d}" />
जो कि संवेदनशील है और इसके लिए .NET 3.5 SP1 या इसके बाद के संस्करण की आवश्यकता है।
नोट: यह मामला संवेदनशील है। "डी" लघु तिथि प्रारूप निर्दिष्टकर्ता है जबकि "डी" लंबी तिथि प्रारूप निर्दिष्टकर्ता है ।
मानक तिथि और समय प्रारूप स्ट्रिंग पर MSDN पृष्ठ पर स्ट्रिंग प्रारूप की एक पूरी सूची है और सभी विकल्पों पर एक पूर्ण विवरण है इस MSDN ब्लॉग पोस्ट
हालांकि, इसके साथ एक गोच है - यह हमेशा यूएस प्रारूप में तारीख को आउटपुट करता है जब तक कि आप संस्कृति को सही मूल्य पर सेट न करें।
यदि आप इस गुण को सेट नहीं करते हैं, तो बाइंडिंग इंजन बाइंडिंग लक्ष्य ऑब्जेक्ट की भाषा गुण का उपयोग करता है । एक्सएएमएल में यह "एन-यूएस" के लिए डिफॉल्ट करता है या पृष्ठ के मूल तत्व (या किसी भी तत्व) से मूल्य विरासत में मिला है, अगर कोई स्पष्ट रूप से सेट किया गया है।
ऐसा करने का एक तरीका पीछे के कोड में है (यह मानकर कि आपने थ्रेड की संस्कृति को सही मान पर सेट किया है):
this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name);
दूसरा तरीका बंधन में कनवर्टर संस्कृति को सेट करना है:
<TextBlock Text="{Binding PropertyPath, StringFormat=d, ConverterCulture=en-GB}" />
हालांकि यह आपको आउटपुट को स्थानीय बनाने की अनुमति नहीं देता है।
या अंग्रेजी के लिए इसका उपयोग करें (या कस्टम के लिए इसे मिलाएं) प्रारूप:
StringFormat='{}{0:dd/MM/yyyy}'
का प्रयोग करें StringFormat
संपत्ति (या ContentStringFormat
पर ContentControl
और उसके डेरिवेटिव, जैसे Label
)।
<TextBlock Text="{Binding Date, StringFormat={}{0:d}}" />
ध्यान दें कि {}
मानक String.Format
स्थितीय तर्क संकेतन से पहले ब्रेसिज़ को मार्कअप एक्सटेंशन भाषा में बच जाने की अनुमति देता है।
{}
आप का उपयोग करने की अनुमति देगा StringFormat='{}Created Date:{0:d}'
जो अन्यथा अप्रत्याशित परिणाम होगा।
कुछ DateTime StringFormat नमूने मुझे उपयोगी लगे। C # उदाहरणों से उठा
DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);
String.Format("{0:y yy yyy yyyy}", dt); // "8 08 008 2008" year
String.Format("{0:M MM MMM MMMM}", dt); // "3 03 Mar March" month
String.Format("{0:d dd ddd dddd}", dt); // "9 09 Sun Sunday" day
String.Format("{0:h hh H HH}", dt); // "4 04 16 16" hour 12/24
String.Format("{0:m mm}", dt); // "5 05" minute
String.Format("{0:s ss}", dt); // "7 07" second
String.Format("{0:f ff fff ffff}", dt); // "1 12 123 1230" sec.fraction
String.Format("{0:F FF FFF FFFF}", dt); // "1 12 123 123" without zeroes
String.Format("{0:t tt}", dt); // "P PM" A.M. or P.M.
String.Format("{0:z zz zzz}", dt); // "-6 -06 -06:00" time zone
स्ट्रिंग प्रारूप के लिए एकल उद्धरण से अवगत रहें। यह काम नहीं करता है:
Content="{Binding PlannedDateTime, StringFormat={}{0:yy.MM.dd HH:mm}}"
जबकि यह है:
Content="{Binding PlannedDateTime, StringFormat='{}{0:yy.MM.dd HH:mm}'}"
महज प्रयोग करें:
<TextBlock Text="{Binding Date, StringFormat=\{0:d\}}" />