我的模型类Animal
实现了INotifyDataErrorInfo
来添加验证。我的视图绑定到一个具有属性SelectedAnimal
的Animal
类型的视图模型,如下所示:
视图
<TextBox Text="{Binding SelectedAnimal.Epc, UpdateSourceTrigger=PropertyChanged,
ValidatesOnNotifyDataErrors=True}" />
ViewModel
public Animal SelectedAnimal
{
get
{
return _animal;
}
set
{
Set(() => Animal, ref _animal, value);
}
}
错误可视化工作得很好:
问题
我想添加额外的验证,在我的视图模型中完成的字段EPC,而不是在Animal
类中。因此,我想添加另一个验证规则(例如,检查EPC是否唯一),即使用EPC TextBox可视化。
我怎样才能做到这一点?视图模型规则的验证错误也应该显示在EPC TextBox上。
我尝试过操纵类动物的验证错误列表,但没有成功。
更多信息
发布于 2016-09-25 21:56:17
这是解决问题的一种方法:
ExtendedEpcValidate
中Animal.Epc
验证并将结果添加到视图模型中的Epc
验证结果
公共静态ValidationResult AnimalEpcValidate(object obj,ValidationContext上下文){ var aevm = context.ObjectInstance as ViewModel;//获取来自动物验证的animalErrors = aevm.Animal.GetErrors(" Epc ")?.Cast();//将来自动物验证的错误添加到您的Epc验证结果var error = animalErrors?.Aggregate(string.Empty,( current,animalError) => current+ animalError);//返回聚集错误Epc属性返回string.IsNullOrEmpty(错误)?ValidationResult.Success :新ValidationResult(错误,新列表{ "Epc“});}https://stackoverflow.com/questions/39659965
复制