Ich wollte nur hinzufügen, dass die Antwort von Loraderon in den meisten Fällen großartig funktioniert. Wenn ich die folgende Codezeile in meine App.xaml.cs einfüge, werden die Daten in meinen TextBlocks in der richtigen Kultur formatiert.
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(System.Windows.Markup.XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
Ich sage "die meisten Fälle". Zum Beispiel wird dies sofort funktionieren:
<TextBlock Text="{Binding Path=Date, StringFormat={}{0:d MMMM yyyy}}" />
--> "16 mei 2013" (this is in Dutch)
... aber wenn Sie Runs in einem TextBlock verwenden, wird die DateTime in der Standardkultur formatiert.
<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")
Damit dies funktioniert, brauchte ich Gusdors Antwort, nämlich ConverterCulture = {x: Static gl: CultureInfo.CurrentCulture} zur Bindung hinzuzufügen.
<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)
Ich hoffe, diese zusätzliche Antwort wird jemandem von Nutzen sein.