ロラデロンの答えがほとんどの場合にうまく機能することを追加したかっただけです。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}をバインディングに追加する必要がありました。
<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)
この追加の答えが誰かに役立つことを願っています。