我想通过DataAnnotations在Silverlight 5应用程序中验证数据。我写了几个自定义的ValidationAttributes,它们工作正常,只要我在属性的Setter中进行验证即可。如果用户打开数据表单进行此验证,只需按下“保存”按钮,而不对属性进行任何更改,我想验证整个对象。在这一部分,我的实现并不像预期的那样工作。我写了一个使用Validator.TryValidateObject()的方法。在结果中,我看到ValidationExceptions正在被抛出,但它们没有显示在UI上。有没有人知道我在做什么错了?我猜系统不知道Exception抛出哪个属性?TryValidateObject不显示错误
public bool ValidateObject()
{
var validationItems = new List<ValidationResult>();
var result = new List<ValidationResult>();
Validator.TryValidateObject(this, new ValidationContext(this), result, true);
if (result.Count > 0)
{
foreach (var error in result)
{
throw new ValidationException(error.ErrorMessage = LanguageManager.Instance.GetLanguageString(error.ErrorMessage));
}
}
return result.Count != 0;
}
LanguageManager是一个以当前所选语言返回错误消息的对象。
非常感谢您的帮助。
非常感谢!这帮助了我。我已经实现了INotifyDataErrorInfo,但忘记在控件绑定上设置ValidatesOnNotifyDataErrors = True。 感谢! –
Danny