我正在将一个float属性绑定到我的TextBox控件。如果我使用“en”作为我的语言偏好,这是正确的。 输入数字“1.123”已正确解析。
如果我将mur文化切换为“de”,TextBox(和TextBlocks)中没有任何变化。仍然所有内容都用“。”格式化。
通过WinRT的“数字”键盘输入一个数字,使用“,”作为分隔符。但是,在Focus丢失之后,训练数字将不会成为数字的一部分(并且绑定的属性会更新。 所以“1,234”应该被解析为“1.234”。但是转换为“1”。
app.xaml.cs包含更多初始化,以确保将文化设置为正确的语言。允许的语言是(“en”和“de”(*,proj文件。 如果您进入调试器,CultureInfo.CurrentCulture正确设置为“de”。
public App()
{
Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = CultureInfo.CurrentCulture.Name;
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CurrentCulture;
CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CurrentCulture;
答案 0 :(得分:1)
在PrimaryLanguageOverride
构造函数中设置DefaultThreadCurrentCulture
,DefaultThreadCurrentUICulture
和Application
无效,因为它们仅适用于新主题。但是,您的主UI线程已经创建,并且在输入构造函数时设置了它的文化。
要强制更改现有的UI线程,您必须按照CultureInfo.CurrentCulture中的说明设置Thread.CurrentCulture
;但是,WinRT不支持Thread
类。
这导致了为什么需要任何手工文化变革的问题。应用程序应该在启动时或从休眠状态恢复时自动获取用户的Windows文化。
答案 1 :(得分:0)
要获得我们可以使用的InvariantCulture设置,
“ApplicationLanguages.PrimaryLanguageOverride = CultureInfo.InvariantCulture.TwoLetterISOLanguageName;”
这对我有用。