J'ai un objet lié à un winform et cet objet implémente IDataErrorInfo. J'ai un fournisseur d'erreur. Le problème est quand une propriété d'une propriété change.C# IDataErrorInfo et la propriété enfant
Il n'y a pas de problème lorsque je change l'âge (ie les règles sont vérifiées et affichées/retirées correctement). Mais quand je change le titre du travail, l'erreur n'est pas affichée/supprimée (en effet le titre de propriété n'appartient pas à la personne objet). Comment puis-je effectuer le contrôle?
this.errorProvider1.DataSource = this.bindingSourcePerson;
bindingSourcePerson.DataSource = new Person();
textBoxAge.DataBindings.Add("Text", bindingSourcePerson, "Age");
textBoxJobTitle.DataBindings.Add("Text", bindingSourcePerson, "CurrentJob.Title");
public class Person : IDataErrorInfo
{
public double Age { get; set; }
private Job _job = new Job();
public Job CurrentJob { get { return _job; } set { _job = value; } }
public string this[string columnName]
{
get
{
_lastError = "";
switch (columnName)
{
case "Age":
case "CurrentJob.Title":
if (!string.IsNullOrEmpty(CurrentJob.Title) && Age < 16)
_lastError = "Invalid job.";
break;
default: _lastError = "";
break;
}
return _lastError;
}
}
private string _lastError = "";
public string Error
{
get { return _lastError; }
}
public class Job
{
public string Title { get; set; }
}
Si c'était du WPF, j'aurais dit de mettre le datacontext de la zone de texte à CurrentJob et de valider sur ça ... J'aimerais bien le savoir aussi. – Botz3000