我已经在我的应用中应用了MVVM,通过关注this tutorial和this sample来实现某些页面的验证规则,因此验证工作正常且非常有创意但我在验证文本框文本时遇到了一个问题在以下场景中:
在实施Required
OR Regular Expression
或任何其他数据验证规则后,除非文本框文本发生某些更改(即用户输入一些文本并将其删除,否则将无法启动)需要验证和验证错误)
这意味着页面中的所有TextBox都有效,即使它们由Required
注释,并且它们不包含任何文本(如果它们的文本没有发生任何变化)
答案 0 :(得分:1)
这意味着页面中的所有TextBox都是有效的
根据我的样本测试,除非你调用以下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
已验证但不是第二个:
验证全部: