WINRT 文本框编号格式不尊重当前区域性



我正在将浮点属性绑定到我的文本框控件。如果我使用"en"作为我的语言首选项,这是正确的。输入数字"1.123"将正确解析。

如果我将 mur 区域性切换到"de",文本框(和文本块)中没有任何变化。仍然所有内容都用"."格式化。

通过 WinRT 的"数字"键盘输入数字将使用","作为分隔符。但是,在焦点丢失后,训练数字将不再是数字的一部分(并且绑定属性已更新。因此,"1,234"应该在内部解析为"1.234"。但 ist 转换为"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;

Application 构造函数中设置PrimaryLanguageOverrideDefaultThreadCurrentCultureDefaultThreadCurrentUICulture 不起作用,因为它们仅适用于新线程。但是,您的主 UI 线程已在输入构造函数时创建并设置了其区域性。

若要强制更改现有 UI 线程,必须按照 CultureInfo.CurrentCulture 中所述设置Thread.CurrentCulture;但是,WinRT 不支持 Thread 类。

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

若要获取我们可以使用的"不变文化"设置,

"ApplicationLanguages.PrimaryLanguageOverride = CultureInfo.InvariantCulture.TwoLetterISOLanguageName;"

这对我有用。

相关内容

  • 没有找到相关文章

最新更新