J'ai un ModelBase qui est la base de tous mes models.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?