Je voulais juste ajouter que la réponse de Loraderon fonctionne très bien dans la plupart des cas. Lorsque je mets la ligne de code suivante dans mon App.xaml.cs, les dates de mes TextBlocks sont formatées dans la culture correcte.
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(System.Windows.Markup.XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
Je dis `` la plupart des cas '', par exemple, cela fonctionnera immédiatement:
<TextBlock Text="{Binding Path=Date, StringFormat={}{0:d MMMM yyyy}}" />
--> "16 mei 2013" (this is in Dutch)
... mais lors de l'utilisation de Run dans un TextBlock, le DateTime est formaté dans la culture par défaut.
<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")
Pour que cela fonctionne, j'avais besoin de la réponse de Gusdor , à savoir ajouter ConverterCulture = {x: Static gl: CultureInfo.CurrentCulture} à la liaison.
<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)
J'espère que cette réponse supplémentaire sera utile à quelqu'un.