运行 组件上的 WPF StringFormat 使用了错误的区域性
WPF StringFormat on a Run component uses wrong culture
我有一个 DateTime 属性 绑定到 运行 元素的文本 属性,使用 ShortDate (StringFormat=d) 的 StringFormat,但它使用的是 en-US 文化系统文化 (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)));
它确实适用于某些组件,但不适用于该日期格式。
同时覆盖 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
。
我有一个 DateTime 属性 绑定到 运行 元素的文本 属性,使用 ShortDate (StringFormat=d) 的 StringFormat,但它使用的是 en-US 文化系统文化 (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)));
它确实适用于某些组件,但不适用于该日期格式。
同时覆盖 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
。