IEditableObject, comment s'en sortir ?
J'ai un ModelBase qui est la base de tous mes models.
Code:
1 2
|
public abstract class ModelBase : INotifyPropertyChanged, ICloneable, ISupportError, IEditableObject, ISupportInitialize |
On peux voir que tous mes model sont IEditableObject à cause de leur base
Code:
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
|
#region ICloneable Members
public object Clone()
{
object clonedInstance = this.MemberwiseClone();
CloneMembers(clonedInstance);
return clonedInstance;
}
protected virtual void CloneMembers(object clonedInstance)
{
}
#endregion
public abstract void CopyTo(object destination);
#region IEditableObject Members
object backupObject = null;
public void BeginEdit()
{
backupObject = this.Clone();
}
public void CancelEdit()
{
if (backupObject == null)
return;
BeginInit();
((ModelBase)backupObject).CopyTo(this);
EndInit();
}
public void EndEdit()
{
backupObject = null;
}
#endregion |
Tout cela fonctionne #1.
Quand je "pop" du windows, j'ai seulement a faire obj.BeginEdit() et sur le save obj.EndEdit()
Le problème c'est quand une fenetre "pop" d'autre fenetre editable
Window1 (BeginEdit sur sa donnée)
-> Window2 (BeginEdit sur sa donnée (qui elle est une donnée en édition))
Donc je dois tombé avec une Stack de backup. Jusque la ca va, mais un problème survient quand on fait un CancelEdit sur la premiere windows.
Comment dire a mon object que je fait un cancel sur une tel instance de backup ?
Comment vous utiliser le IEditableObject avec possibilité de multiple beginEdit ?