我想验证用户输入以确保它们是整数。我该怎么做?我想到了使用 IDataErrorInfo
,这似乎是在 WPF 中进行验证的“正确”方法。所以我尝试在我的 ViewModel 中实现它。
但问题是我的文本框绑定(bind)到一个整数字段,并且不需要验证 int
是否为 int
。我注意到 WPF 会自动在文本框周围添加一个红色边框以通知用户错误。基础属性不会更改为无效值。但我想通知用户这一点。我该怎么做?
最佳答案
另一种方法是简单地不允许非整数值。 以下实现有点糟糕,我想稍后将其抽象化以使其更易于重用,但这是我所做的:
在我看来,在后面的代码中(我知道如果你是硬核 mvvm,这可能会造成伤害;o)) 我定义了以下函数:
private void NumericOnly(System.Object sender, System.Windows.Input.TextCompositionEventArgs e)
{
e.Handled = IsTextNumeric(e.Text);
}
private static bool IsTextNumeric(string str)
{
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex("[^0-9]");
return reg.IsMatch(str);
}
在 XAML View 中,每个只应接受整数的文本框 是这样定义的:
<TextBox Padding="2" TextAlignment="Right" PreviewTextInput="NumericOnly" Text="{Binding xxx.yyyy}" MaxLength="1" />
关键属性是PreviewTextInput
关于c# - 仅允许在 WPF 文本框中输入数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4085471/