0

我将浮动属性绑定到我的 TextBox 控件。如果我使用“en”作为我的语言首选项,那是正确的。输入数字“1.123”被正确解析。

如果我将 mur 文化切换为“de”,则 TextBox(和 TextBlocks)中没有任何变化。仍然所有内容都用“。”格式化。

通过 WinRT 的“数字”键盘输入数字是使用“,”作为分隔符。但是在 Focus 丢失后,Training Digits 将不会成为数字的一部分(并且绑定属性已更新。因此“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;
4

2 回答 2

1

在构造函数中设置PrimaryLanguageOverrideDefaultThreadCurrentCulture和没有效果,因为它们只适用于新线程。但是,您的主 UI 线程已经创建,并且在输入构造函数时设置了其文化。DefaultThreadCurrentUICultureApplication

要强制更改现有 UI 线程,您必须Thread.CurrentCulture按照CultureInfo.CurrentCulture中的说明进行设置;但是,WinRT 不支持Thread该类。

这就引出了一个问题,为什么需要任何手动的文化改变。应用程序应在启动时或从休眠状态恢复时自动获取用户的 Windows 文化。

于 2012-08-10T13:54:54.170 回答
0

要获得我们可以使用的 InvariantCulture 设置,

“ApplicationLanguages.PrimaryLanguageOverride = CultureInfo.InvariantCulture.TwoLetterISOLanguageName;”

这对我有用。

于 2013-05-29T06:35:03.610 回答