比方说我的viewmodel类是这样的
public class MainWindowViewModel : ValidatableBindableBase
{
public ObservableCollection<Employee> Employees { get; set; } = new
ObservableCollection<Employee>();
}
Employee类所在的地方
public class Employee : ValidatableBindableBase
{
private string _name;
public string Name
{
get => _name;
set
{
SetProperty(ref _name, value);
}
}
private int _age;
public int Age
{
get => _age;
set => SetProperty(ref _age, value);
}
}
主视图包含一个绑定到可观察集合的数据网格。现在,我正在使用FluentValidatin执行验证逻辑,我有两个选择:1)在员工类级别上进行验证,或2)在Mainwindow类级别上进行验证。如果我们选择第二个选项,则验证将如下所示:
internal class EmployeeValidation : AbstractValidator<Employee>
{
public EmployeeValidation()
{
RuleFor(e => e.Age).ExclusiveBetween(10, 50);
}
}
internal class MainWindowValidation : AbstractValidator<MainWindowViewModel>
{
public MainWindowValidation()
{
RuleForEach(x => x.Employees).SetValidator(new EmployeeValidation());
}
}
现在,问题是验证结果显示属性名称为“ Employees [0] .Age”,这显然不适用于数据网格绑定。我知道,如果我在Employee类级别上运行验证,则属性名称将为“ Age”,并且INotifyDataErrorInfo可以正常工作。但是,我更喜欢使用父视图模型(即MainWindow),是否可以解决属性名称问题?