1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
public PersonViewModel : INotifyPropertyChanged
{
public ObservableCollection<Person> Persons
{
get;
private set;
}
public Dictionnary<int idPerson, Person> ModifedPersons
{
get;
private set;
}
/// <summary>
/// Personne selectionnée dans la liste (a binder sur elementName de ta liste box avec un pat à SelectedItem)
/// </summary>
public Person SelectedPerson
{
get
{
return this.selectedPerson;
}
set
{
if( this.selectedPerson != value )
{
this.selectedPerson = value;
this.NotifyPropertyChanged("SelectedPerson");
// on passe une copie de la personne
if( value != null )
{
this.ModifiedPerson = value.Clone();
}
}
}
}
private Person selectedPerson;
/// <summary>
/// Personne en cours de modification (a Binder sur ton formulaire)
/// </summary>
public Person PersonModifing
{
get
{
return this.personModifing;
}
set
{
this.PersonModifing = value;
this.NotifyPropertyChanged("PersonModifing");
}
}
private Person personModifing;
/// <summary>
/// On accepte les modification de la personne
/// </summary>
public void AcceptPersonModification()
{
// on recopie dans la personne selectionné
this.selectedPerson.Name = PersonModifing.Name;
//...
// on ajoute dans le dictionnaire des personnes modifiées
// si la personne dispose d'un id, cela permet de ne pas enregistrer plusieurs fois les modifications.
this.ModifedPersons.Add( this.selectedPerson.Id, this.selectedPerson );
}
public void SavePersonsModifiedInModel()
{
// on sauve dans le Model (base de donnée)
foreach( Person person in ModifedPersons.Values )
{
}
}
} |
Partager