在我的 .NET MAUI 应用程序中,我的条目应该允许 positive double 值。另外,我允许切换语言。目前,我只支持英语和德语。
无论如何,在英语文化设置中,“.”是小数点分隔符,在德语中则是“,”。
在我的Pixel 5 - API 33(Android 13.0 - API 33)模拟器中,当我在德语语言设置中点击“,”以及在英语语言设置中点击它时,我只会得到“。”。
不幸的是,当时的解释不同,实际上“84.2”的输入随后被存储为 842“。
有没有一种简单的方法来处理这个问题,以便独立于当前文化正确存储和加载值?
另外,有没有一种简单的方法可以只允许正值,并且在打字时也可以有“0”和“0.”,但不能有“.456”?
或者也许你们中的一些人知道一种比在 TextChanged 期间解析某个正则表达式(我目前所做的)更简单的方法来允许正双值文化独立?然后还想将值存储在 SQLite 中。
=========== 条目代码已更改 ======
private void EntryControl_TextChanged(object sender, TextChangedEventArgs e)
{
var entry sender as Entry;
var input entry.Text;
var match = Regex.Match(input, „^(0|0[.,][0-9]*|[1-9]+[.,]*[0-9]*)$“);
if (input.Length == 0)
{
return;
}
if (!match.Success)
{
entry.Text = e.OldTextValue;
}
entry.CursorPosition = e.NewTextValue.Length;
}