Tôi chỉ muốn nói thêm rằng câu trả lời của loraderon hoạt động tuyệt vời trong hầu hết các trường hợp. Khi tôi đặt dòng mã sau vào App.xaml.cs, ngày tháng trong TextBlock của tôi được định dạng theo đúng văn hóa.
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(System.Windows.Markup.XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
Tôi nói 'hầu hết các trường hợp'. Ví dụ, điều này sẽ hoạt động tốt:
<TextBlock Text="{Binding Path=Date, StringFormat={}{0:d MMMM yyyy}}" />
--> "16 mei 2013" (this is in Dutch)
... nhưng khi sử dụng Run trong TextBlock, DateTime được định dạng theo văn hóa mặc định.
<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")
Để điều này hoạt động, tôi cần câu trả lời của Gusdor , cụ thể là thêm ConverterCulture = {x: Static gl: CultureInfo.CurrentCulture} vào 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)
Tôi hy vọng câu trả lời bổ sung này sẽ có ích cho ai đó.