Я просто хотів додати, що відповідь лорадерона в більшості випадків працює чудово. Коли я поміщаю наступний рядок коду у своєму 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's в 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")
Для цього мені потрібна відповідь Гусдора , а саме додавання 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)
Я сподіваюся, що ця додаткова відповідь комусь буде корисна.