运行组件上的WPF StringFormat使用错误的区域性

时间:2018-10-19 14:29:23

标签: c# wpf currentculture

我有一个使用StringFormat for ShortDate(StringFormat = d)绑定到Run元素的Text属性的DateTime属性,但是它使用的是美国文化而不是系统文化(pt-BR)。我的代码如下:

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

我使用了this link中的代码来覆盖我所有组件的区域性。

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 :(得分:2)

还覆盖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" />

Run不是FrameworkElement