在我的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;
}
所有内容都按照预期为en-US工作,但是一旦我将Windows Phone模拟器的Region设置切换为de-CH(瑞士,但de-DE等其他欧洲文化具有相同的问题),会发生以下情况:
屏幕键盘现在显示','(逗号)而不是'。' (句号)以及数字键
culture.NumberFormat.CurrrencyDecimal.Separator仍然是'。',就像 culture.NumberFormat.NumberDecimalSeparator(句号)一样。因此,无法成功解析使用键盘输入的十进制数!
有解决方法吗?键盘上的分隔符号(逗号)与相应的NumberFormat中的分隔符之间的不匹配似乎很奇怪。
答案 0 :(得分:0)
在decimal.TryParse
使用CultureInfo.InvariantCulture
而不是当前文化。