Я разрабатываю приложение WPF с использованием архитектуры MVVM. Я любитель в WPF, так что медведь со мной ..Как проверить дочерние объекты путем реализации IDataErrorInfo в родительском классе
У меня есть два класса моделей. Родительский класс имеет объект другого (дочернего) класса в качестве его свойства. (я имею в виду вложенные объекты и не наследуемые объекты)
Например, рассмотрим следующий сценарий.
public class Company
{
public string CompanyName {get; set;}
public Employee EmployeeObj {get; set;}
}
public class Employee
{
public string FirstName {get; set;}
public string LastName {get; set;}
}
Я хочу проверить свойства объекта Employee с использованием блока проверки работоспособности Enterprise Library.
я был в состоянии сделать это путем реализации интерфейса IDataErroInfo в классе сотрудников, как показано ниже
public class Employee : IDataErrorInfo
{
[NotNullValidator(MessageTemplate="First Name is mandatory"]
public string FirstName {get; set;}
[StringLengthValidator(0,20,MessageTemplate="Invalid")]
public string LastName {get; set;}
public string Error
{
get
{
StringBuilder error = new StringBuilder();
ValidationResults results = Validation.ValidateFromAttributes<Employee>(this);
foreach (ValidationResult result in results)
{
error.AppendLine(result.Message);
}
return error.ToString();
}
}
public string this[string propertyName]
{
get
{
ValidationResults results = Validation.ValidateFromAttributes<Employee>(this);
foreach (ValidationResult result in results)
{
if (result.Key == propertyName)
{
return result.Message;
}
}
return string.Empty;
}
}
}
Я не хочу, чтобы реализовать IDataErroInfo для каждого ребенка модели я создаю.
Есть ли способ проверить объект Employee путем реализации IDataErrorInfo в классе parent (Company)?
А также есть триггеры для начала проверки объектов. Я хотел бы проверить объекты только тогда, когда захочу и не все время.
Обратите внимание, что IDataErrorInfo должны быть реализованы в ViewModel, не в Модели. –
да это был бы один вариант. но если я это сделаю, мне нужно создать свойство в viewmodel для каждого свойства, которое у меня есть в модели. Прямо сейчас у меня есть сам объект модели как свойство, и я напрямую привязываю элементы управления представлением к модели. – raja9787