J'ai un ModelBase qui est la base de tous mes models.
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 public abstract class ModelBase : INotifyPropertyChanged, ICloneable, ISupportError, IEditableObject, ISupportInitialize
Tout cela fonctionne #1.
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
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 ?
Partager