繁体   English   中英

文本框验证仅在文本更改后有效

[英]Textbox Validation works only after text change

通过遵循本教程本示例 ,我已在我的应用程序中应用MVVM来实现某些页面的验证规则,因此验证工作正常,这是一种非常有创意的方式,但是在以下情况下验证Textbox文本时遇到一个问题:

实施RequiredRegular Expression或任何其他数据验证规则后,除非对文本框文本进行一些更改(即用户输入一些文本并将其删除,将触发所需的验证,并且验证错误在那里),否则它将不起作用。

这意味着页面中的所有TextBox都将是有效的,即使它们由Required注释并且不包含任何文本(以防万一其文本尚未发生变化)

这意味着页面中的所有TextBoxes都是有效的

根据我这一边的示例测试,除非您调用以下ValidateProperties()方法,该方法用于验证所有属性,否则您将不会获得所有验证。

  public bool ValidateProperties()
  {
      var propertiesWithChangedErrors = new List<string>();

      // Get all the properties decorated with the ValidationAttribute attribute.
      var propertiesToValidate = _entityToValidate.GetType()
                                                  .GetRuntimeProperties()
                                                  .Where(c => c.GetCustomAttributes(typeof(ValidationAttribute)).Any());

      ...
  }

ViewModel继承自ValidatableBindableBase类,该类将获得Errors属性。 每个TextBox控件都绑定自己的Errors属性。 一旦此属性更改,一个TextBox的错误将更新,由于其属性不变,因此不会影响其他TextBox

更新的文本导致第一个验证的TextBox生效,而第二个则未验证:

在此处输入图片说明

验证所有:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM