Je développe une application WPF en utilisant MVVM Architecture. Je suis un amateur dans WPF donc ours avec moi ..Comment valider des objets enfants en implémentant IDataErrorInfo sur la classe parente
J'ai deux classes de modèle. La classe parent a un objet d'une autre classe (enfant) en tant que sa propriété. (Je veux dire des objets imbriqués et non des objets hérités)
Par exemple, considérons le scénario suivant. Je souhaite valider les propriétés de l'entité Employé à l'aide du bloc de validation de la bibliothèque d'entreprise.
j'ai pu le faire en mettant en œuvre l'interface IDataErroInfo dans la classe des employés comme indiqué ci-dessous
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;
}
}
}
Je ne veux pas mettre en œuvre IDataErroInfo pour chaque modèle enfant je crée.
Existe-t-il un moyen de valider l'objet Employee en implémentant IDataErrorInfo sur la classe parent (Société)?
Et il existe également des déclencheurs pour démarrer la validation des objets. Je voudrais valider les objets seulement quand je le veux et pas tout le temps.
Notez que le IDataErrorInfo devrait être mis en œuvre dans le ViewModel, non dans le modèle. –
oui ce serait une option. mais si je le fais, je dois créer une propriété dans viewmodel pour chaque propriété que j'ai dans le modèle. À l'heure actuelle, j'ai l'objet modèle lui-même en tant que propriété et lie directement les contrôles de vue au modèle. – raja9787