ฉันแค่อยากจะเพิ่มว่าคำตอบของloraderon ใช้งานได้ดีในกรณีส่วนใหญ่ เมื่อฉันใส่โค้ดบรรทัดต่อไปนี้ใน App.xaml.cs วันที่ใน TextBlocks ของฉันจะถูกจัดรูปแบบตามวัฒนธรรมที่ถูกต้อง
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)
... แต่เมื่อใช้ Run ใน TextBlock DateTime จะถูกจัดรูปแบบในวัฒนธรรมเริ่มต้น
<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คือการเพิ่ม ConverterCulture = {x: Static gl: CultureInfo.CurrentCulture} ใน Binding
<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)
ฉันหวังว่าคำตอบเพิ่มเติมนี้จะเป็นประโยชน์กับใครบางคน