Chciałem tylko dodać, że odpowiedź loraderona działa świetnie w większości przypadków. Kiedy umieszczam następujący wiersz kodu w moim App.xaml.cs, daty w moich TextBlocks są formatowane w poprawnej kulturze.
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(System.Windows.Markup.XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
Mówię `` w większości przypadków '', na przykład to zadziała po wyjęciu z pudełka:
<TextBlock Text="{Binding Path=Date, StringFormat={}{0:d MMMM yyyy}}" />
--> "16 mei 2013" (this is in Dutch)
... ale w przypadku używania Run w TextBlock DateTime jest formatowany w domyślnej kulturze.
<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")
Aby to zadziałało, potrzebowałem odpowiedzi Gusdora , a mianowicie dodania ConverterCulture = {x: Static gl: CultureInfo.CurrentCulture} do 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)
Mam nadzieję, że ta dodatkowa odpowiedź komuś się przyda.