Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF XAML StringFormat:在C#4.0中破坏了区域性解决方案?_Wpf_C# 4.0_String Formatting - Fatal编程技术网

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?在应用程序、窗口等中?