我有一个数据绑定(bind)的 WPF 文本框。我需要限制文本框上的用户输入,以便它只接受数字和单个句点(用于显示小数)。
我知道我可以用“Winforms”方式处理这个问题并验证 KeyPress 事件上的每个输入,但我想知道在 WPF 中是否有更清晰甚至可能是正确的方法来做到这一点(特别是因为我正在对文本框进行数据绑定(bind)) .
最佳答案
使用 WPF 提供的 ValidationRules。
xaml 将是:
<TextBox>
<TextBox.Text>
<Binding Path="Name">
<Binding.ValidationRules>
<ExceptionValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
文本框属性的代码是(使用正则表达式进行验证):
public string Name
{
get { return _name; }
set
{
_name = value;
if (!Regex.IsMatch(value, @"^((?:[1-9]\d*)|(?:(?=[\d.]+)(?:[1-9]\d*|0)\.\d+))$"))
{
throw new ApplicationException("Please enter only numbers/decimals.");
}
}
}
上面给出的正则表达式:^((?:[1-9]\d*)|(?:(?=[\d.]+)(?:[1-9]\d* |0)\.\d+))$
可以在这个 Rubular link 进行测试
正则表达式将匹配这些:
1.2
22522
0.33
3.90000
但不是这些:(您可以调整正则表达式以允许其中的一些)
.999
23.35.1343
03423.23423
关于c# - 如何在文本框上只接受数字和单个句点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12208750/