Volevo solo aggiungere che la risposta di Loraderon funziona alla grande nella maggior parte dei casi. Quando inserisco la seguente riga di codice nel mio App.xaml.cs, le date nei miei TextBlock sono formattate nella lingua corretta.
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(System.Windows.Markup.XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
Dico `` la maggior parte dei casi ''. Ad esempio, questo funzionerà immediatamente:
<TextBlock Text="{Binding Path=Date, StringFormat={}{0:d MMMM yyyy}}" />
--> "16 mei 2013" (this is in Dutch)
... ma quando si utilizza Run's in un TextBlock, DateTime è formattato nella lingua predefinita.
<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")
Perché questo funzionasse, avevo bisogno della risposta di Gusdor , ovvero l'aggiunta di ConverterCulture = {x: Static gl: CultureInfo.CurrentCulture} al 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)
Spero che questa risposta aggiuntiva possa essere utile a qualcuno.