मैं सिर्फ उस लॉरडेरोन का जवाब जोड़ना चाहता हूं जो ज्यादातर मामलों में महान काम करता है। जब मैं अपने App.xaml.cs में कोड की निम्न पंक्ति डालता हूं, तो मेरे TextBlock में दिनांक सही संस्कृति में स्वरूपित हो जाते हैं।
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(System.Windows.Markup.XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
मैं कहता हूं 'अधिकांश मामले'। उदाहरण के लिए, यह बॉक्स से बाहर काम करेगा:
<TextBlock Text="{Binding Path=Date, StringFormat={}{0:d MMMM yyyy}}" />
--> "16 mei 2013" (this is in Dutch)
... लेकिन एक टेक्स्टब्लॉक में रन का उपयोग करते समय, डेटटाइम डिफ़ॉल्ट संस्कृति में स्वरूपित होता है।
<TextBlock>
<Run Text="Datum: " />
<Run Text="{Binding Path=Date, StringFormat={}{0:d MMMM yyyy}, Mode=OneWay}" />
</TextBlock>
--> "Datum: 16 may 2013" (this is in English, notice the
name of the month "may" vs. "mei")
इसके लिए काम करने के लिए, मुझे Gusdor के जवाब की आवश्यकता थी , अर्थात् कन्वर्टरकल्चर = {x: स्टेटिक gl: CultureInfo.CurrentCulture} को बाइंडिंग में जोड़ना।
<TextBlock>
<Run Text="Datum: " />
<Run Text="{Binding Path=Date, StringFormat={}{0:d MMMM yyyy}, ConverterCulture={x:Static gl:CultureInfo.CurrentCulture}, Mode=OneWay}" />
</TextBlock>
--> "Datum: 16 mei 2013" (=Dutch)
मुझे आशा है कि यह अतिरिक्त उत्तर किसी के काम आएगा।