C# WPF定位问题
我使用此行设置数据绑定本地化:C# WPF定位问题,c#,.net,wpf,localization,C#,.net,Wpf,Localization,我使用此行设置数据绑定本地化: FrameworkElement.LanguageProperty.OverrideMetadata( typeof(FrameworkElement), new FrameworkPropertyMetadata( XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))); 但我注意到,如果我在控制面板中自定义语言格式,例如指定另一个十进制
FrameworkElement.LanguageProperty.OverrideMetadata(
typeof(FrameworkElement),
new FrameworkPropertyMetadata(
XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
但我注意到,如果我在控制面板中自定义语言格式,例如指定另一个十进制分隔符,则不会考虑该更改:创建的区域性始终是默认值。有办法解决这个问题吗?
谢谢。只是猜测一下 为此,我们可能需要在窗口消息处理程序中为两个特定的窗口消息重新执行metatdata重写 十六进制数字符号 0050 80 WM_输入更改请求 0051 81 WM_输入变化 有关在WPF中处理windows消息的信息,请参阅此代码
请告诉我这是否有帮助。您应该使用
文化信息。CurrentUICulture
您必须在绑定中设置转换器文化
首先,添加命名空间xmlns:gl=“clr namespace:System.Globalization;assembly=mscorlib”
然后使用
<TextBlock Text="{Binding Path=MyPath, ConverterCulture={x:Static gl:CultureInfo.CurrentCulture}}"/>
在此处找到:我可以使用它,但问题仍然存在,因为属性IetfLanguageTag只包含语言代码,而不包含保存在控制面板中的信息。更改当前线程的区域性时是否具有相同的效果?如果我是对的,这些消息会在发生语言更改时向应用程序发出信号。在应用程序启动期间,我需要从控制面板读取信息,因此我认为这些消息没有帮助。如果我错了,告诉我。再次感谢您。但是当您做出这些更改并说“应用”时,您才希望更改生效,不是吗?那是我们将收到INPUTLANGCHANGE的时候。对不起,有一个误会。我需要知道在应用程序启动期间,而不是在有人更改全局设置时,对全局设置所做的自定义。