我有基类来检查控件验证。
Validator.TryValidateObject(ds, new ValidationContext(ds), res, true);
给出了一组错误,特定数据源绑定到我的控件返回。
没关系,但DXErrorProvider也可以设置错误类型,例如"警告"。
有没有办法根据数据对象中的验证属性设置特定的错误类型?
现在我已经通过反射和检查我的属性的名称来实现它,但是这个解决方案似乎更加复杂和低效。
答案 0 :(得分:0)
这不可能以自动方式实现。正如您可以阅读here,DXErrorProvider完全基于接口IDXDataErrorInfo
。如果您只使用错误图标使用DataAnnotations,则不需要DXErrorProvider,因为这是由控件本身处理的。因此,如果您想使用自定义图标,可以将其与错误处理方式混合使用。比如你可以做某事。像这样:
public class MyClass : IDXDataErrorInfo
{
[Range(0,100)]
[//Further custom validation]
public int Id {get;set;}
//Implement the Interface for your DXErrorProvider
public void GetPropertyError(string propertyname, ErrorInfo info)
{
List<ValidationResult> errors = new List<ValidationResult>();
if (propertyname.Equals(nameof(Id))
{
if (!Validator.TryValidateProperty(Id, new ValidationContext(this,null,null), errors))
{
string errorText = string.Empty;
errors.ForEach(e => errorText += e.ErrorMessage);
//This type set's the error-icon
info.ErrorType = //The Type you want ErrorType.Warning for example
info.ErrorText = errorText;
}
}
}
public void GetError(ErrorInfo info) {}
}
您还可以从ValidationResult编写一个后代,它包含一个Property ErrorType
,可以在DataAnnotations中完整地处理验证逻辑。只有一种可能的解决方案,我觉得它运作得很好。