Я просто хотел добавить, что ответ loraderon отлично работает в большинстве случаев. Когда я помещаю следующую строку кода в свой App.xaml.cs, даты в моих текстовых блоках форматируются с использованием правильного языка и региональных параметров.
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")
Чтобы это сработало, мне нужен был ответ Гусдора , а именно добавление ConverterCulture = {x: Static 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)
Надеюсь, этот дополнительный ответ будет кому-то полезен.