运行 组件上的 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