WPF StringFormat в компоненте Run использует неправильную культуру - PullRequest
0 голосов
/ 19 октября 2018

У меня есть свойство DateTime, привязанное к свойству Text элемента Run с использованием StringFormat для ShortDate (StringFormat = d), но оно использует культуру en-US вместо системной культуры (pt-BR).Мой код выглядит так:

<TextBlock>
     Next date
     <LineBreak />
     <Run Text="{Binding Date, StringFormat=d}" FontWeight="Bold" />
</TextBlock>

Я использовал код из этой ссылки , чтобы переопределить культуру для всех моих компонентов.

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-IN");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-IN");
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(
            XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));

Это работает длянекоторые компоненты, но он не работал для этого формата даты.

1 Ответ

0 голосов
/ 19 октября 2018

Также переопределяйте метаданные для Run элементов:

FrameworkElement.LanguageProperty.OverrideMetadata(typeof(Run), new FrameworkPropertyMetadata(
    XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));

Или задайте свойство Language явно:

<Run Text="{Binding Date, StringFormat=d}" Language="en-IN" FontWeight="Bold" />

A Run не является FrameworkElement.

...