Допустим, мой класс viewmodel выглядит так
public class MainWindowViewModel : ValidatableBindableBase
{
public ObservableCollection<Employee> Employees { get; set; } = new
ObservableCollection<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), есть ли способ решить проблему с именем свойства?