我有一个使用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)));
它确实适用于某些组件,但不适用于该日期格式。
答案 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
。