非英文键盘输入。在我的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中的分隔符之间的不匹配看起来很奇怪。
您是否更改Windows Phone中的键盘和语言和区域设置? – 2014-08-27 14:43:52
改变语言之后,“文化”是什么?我希望小文分隔符随着文化而改变... – 2014-08-27 14:47:58
@JonSkeet嘿约翰,不要走私我的观点,我试图解决这个问题:)) – 2014-08-27 14:59:41