无法分析在Windows Phone上使用非英文键盘输入的十进制数字



在我的Windows Phone 8应用程序中,我有一个文本框,它使用InputScopeNameValue.Number从用户那里获取货币金额。

OnBackKeyPress覆盖将文本框的字符串值解析为十进制值:

    base.OnBackKeyPress(e);
    decimal price = 0m;
    var value = PriceControl.PropertyValue;
    NumberStyles style = NumberStyles.Number;
    CultureInfo culture = System.Threading.Thread.CurrentThread.CurrentCulture;
    if (string.IsNullOrEmpty(PriceControl.PropertyValue) || 
        decimal.TryParse(value, style, culture, out price))
    {
        App.ViewModel.SelectedProduct.Price = price;
    }
    else
    {
        e.Cancel = true;
    }

在美国,一切都如预期,但一旦我将Windows Phone模拟器的Region设置切换到de CH(瑞士,但其他欧洲文化,如de de也有同样的问题),就会发生以下事情:

  • 屏幕键盘现在显示","(逗号)而不是"。"(句点)以及数字的键

  • culture.NumberFormat.CurrencyDecimal.Separator仍然为"文化也是如此。NumberFormat.NumberDecimalSeparator(句点)。因此,使用键盘输入的十进制数无法成功解析!

有办法绕过这个吗?键盘上的分隔符(逗号)和相应NumberFormat中的分隔符不匹配似乎很奇怪。

decimal.TryParse中使用CultureInfo.InvariantCulture而不是当前区域性。

最新更新