Проверка таблицы данных WPF с помощью родительской модели представления с использованием INotifyDataErrorInfo - PullRequest
0 голосов
/ 06 ноября 2018

Допустим, мой класс 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), есть ли способ решить проблему с именем свойства?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...