如何在文本框上设置正则表达式?

7

我该如何在WPF文本框中设置正则表达式? 我希望文本框可以接受预定义格式的输入。 这是否可行?


2
嗨,请看一下这个问题的答案。它似乎正是你所需的:https://dev59.com/4XNA5IYBdhLWcg3wEZeT - andyp
2个回答

8
您有几个选项:
  • 您可以创建一个ValidationRule子类(见下文),并将其添加到绑定的Validators属性中。
  • 您可以在绑定的属性上设置一个ValidationCallback,如果值错误,则抛出异常,并使用此技术轻松显示验证错误。
  • 您可以创建一个附加属性,用于为TextBox.TextChanged属性注册事件处理程序,并实现自己的验证错误通知机制。
  • 您可以在代码后台使用带有TextBox_Changed处理程序的普通TextBox。
  • 您可以像这里所示的那样,从附加属性处理PreviewKeyDown和PreviewTextInput。
  • 您可以像Jan提到的那样使用掩码文本框

对于任意正则表达式,我通常会使用WPF内置的验证功能或在绑定的属性上进行验证。 对于特定需求,PreviewKeyDown / PreviewTextInput或掩码文本框可能更好。

以下是如何创建ValidationRule子类的方法:

public class RegexValidationRule : ValidationRule
{
  ... // Declare Regex property and Message property

  public override ValidationResult Validate(object value, CultureInfo cultureInfo)
  {
    if(Regex.IsMatch((string)value))
      return ValidationResult.ValidResult;
    else
      return new ValidationResult(false, Message);
  }
}

0

你可以在更改事件中进行检查,或者使用所谓的掩码文本框。


我无法在WPF中看到掩码文本框。 - viky
1
请参阅 https://dev59.com/sXRB5IYBdhLWcg3w4bAo。 - Jan Jongboom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接