2

I have a DateTime property bound to the Text property of a Run element using a StringFormat for ShortDate (StringFormat=d), but it's using en-US culture instead of the system culture (pt-BR). My code looks like this:

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

I used the code from this link to override the culture for all my components.

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)));

It does work for some components, but it didn't work for that Date format.

Jonathas Luiz
  • 23
  • 1
  • 3

1 Answers1

5

Also override the metadata for Run elements:

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

Or set the Language property explicitly:

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

A Run is not a FrameworkElement.

mm8
  • 163,881
  • 10
  • 57
  • 88