WPF XAML StringFormat:在C#4.0中破坏了区域性解决方案?
工作围绕WPF XAML StringFormat:在C#4.0中破坏了区域性解决方案?,wpf,c#-4.0,string-formatting,Wpf,C# 4.0,String Formatting,工作围绕 FrameworkElement.LanguageProperty.OverrideMetadata( typeof(FrameworkElement), new FrameworkPropertyMetadata( XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))); …以前一直工作到现在(这里提到:) 相反,直到我将我的应用程序从3.5SP1移植到4.0,它才开始工作。但现在在4.0
FrameworkElement.LanguageProperty.OverrideMetadata(
typeof(FrameworkElement),
new FrameworkPropertyMetadata(
XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
…以前一直工作到现在(这里提到:)
相反,直到我将我的应用程序从3.5SP1移植到4.0,它才开始工作。但现在在4.0中,它又停止了工作。有人经历过这个吗
编辑:它现在甚至不能在3.5SP1中工作。我认为这与4.0的安装有关,因为之前这是可行的
通过添加或删除变通方法,它都不起作用。我甚至试着添加
CultureInfo.CurrentCulture.ClearCachedData();
this.Language = XmlLanguage.GetLanguage( CultureInfo.CurrentCulture.IetfLanguageTag);
到
窗口
构造函数。这也不起作用。1。确保尽早覆盖LanguageProperty
的默认值。应用程序的静态构造函数是最好的选择。这一点很重要,因为BindingExpression
会缓存此属性的值,并且不会因为性能原因而在以后重新计算它
2.您的文化信息是什么。当前文化是什么?你确定这就是你想看到的吗
3.如果在树的上方指定xml:lang
属性,则覆盖语言
属性元数据无效。例如,如果你说:
<StackPanel xml:lang="it">
<TextBlock Text="{Binding StringFormat=C}"/>
</StackPanel>
无论您在属性元数据中设置了什么,您都将获得意大利货币
4.如果在绑定中指定ConverterCulture
属性,则重写语言
属性元数据无效。例如,如果您说:
,则无论您在属性元数据或xml:lang
属性中设置了什么,您都将获得日元
据我所知,这种行为在不同的框架之间没有改变
希望这有帮助也许MS已经解决了这个问题。当您完全移除周围的工作时会发生什么?代码是否按预期工作。我在问题中添加了信息。您在应用程序中的何处重写LanguageProperty?在应用程序、窗口等中?