2014-08-27 57 views
0

非英文键盘输入。在我的Windows Phone 8的应用程序,我有一个使用InputScopeNameValue.Number从用户引起的货币金额文本框。无法解析十进制数,使用Windows Phone上

的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; 
    } 

一切正常为EN-US,但一旦我切换了Windows Phone模拟器的区域设置DE-CH(瑞士,但其他欧洲文化如脱DE有同样的问题),下面的事情发生了:现在

  • 屏幕上的键盘显示“”(逗号),而不是一个 '。' (期间)以及数字键

  • culture.NumberFormat.CurrrencyDecimal.Separator仍然是'。'正如culture.NumberFormat.NumberDecimalSeparator(period)。因此使用键盘输入的十进制数不能被成功解析!

有没有办法解决这个问题?键盘上的分隔符(逗号)与相应的NumberFormat中的分隔符之间的不匹配看起来很奇怪。

+0

您是否更改Windows Phone中的键盘和语言和区域设置? – 2014-08-27 14:43:52

+2

改变语言之后,“文化”是什么?我希望小文分隔符随着文化而改变... – 2014-08-27 14:47:58

+0

@JonSkeet嘿约翰,不要走私我的观点,我试图解决这个问题:)) – 2014-08-27 14:59:41

回答

0

在您的decimal.TryParse使用CultureInfo.InvariantCulture而不是当前文化。