Salut,

J'ai poussé mamie dans les orties, et j'ai pris un retour de flemme...

Je veux faire une collection et une collection ordonnée, les deux observables mais abstraites pour pouvoir tout gérer trop facilement à la fin.

J'ai juste un souci pour le ProperyChanged dans la classe héritière, j'ai trouvé ça : https://msdn.microsoft.com/fr-fr/library/hy3sefw3.aspx

Mais c'est à l'ancienne pas avec INotifyPropertyChanged.

Alors... Voici le code (ne m'insultez pas, je découvre).

Pour préserver votre santé mentale, je ne met que le nécessaire

D'abord, l'item de base, T c'est le type du Id de la base de données (Guid ou Int)
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
 
    [Serializable]
    public abstract class _LookupItemBase<T> : ITable<T>, INotifyPropertyChanged
    {
         //Faites moi confiance, j'ai bien déclaré les membres privés
        public event PropertyChangedEventHandler PropertyChanged;
        public T Id
        {
            get
            {
                return _id;
            }
 
            set
            {
                _id = value;
                if (PropertyChanged != null)
                    PropertyChanged(this, new PropertyChangedEventArgs("Id"));
            }
        }
 
        public string Name
        {
            get
            {
                return _name;
            }
 
            set
            {
                _name = value;
                if (PropertyChanged != null)
                    PropertyChanged(this, new PropertyChangedEventArgs("Name"));
            }
        }
        public _LookupItemBase(){} //Constructeur neutre pour que la sérialisation fonctionne
        public _LookupItemBase(T id, string name)
        {
            this._id = _id;
            this._name = name;
        }
    }
Puis, l'item lorsque il y a ordonnancement
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
 
    [Serializable]
    public abstract class _OrderedLookupItemBase<T> : _LookupItemBase<T>
    {
        private int _sortIndex;
 
        public int SortIndex
        {
            get
            {
                return _sortIndex;
            }
 
            set
            {
                _sortIndex = value;
                //Ci dessous ce que je n'arrive pas à faire
                //if (base.PropertyChanged != null)
                //    PropertyChanged(this, new PropertyChangedEventArgs("Description"));
 
            }
        }
 
        public _OrderedLookupItemBase(T id, string name, string description, int sortIndex) : base (id, name, description)
        {
            this._sortIndex = sortIndex;
        }
    }
Après, j'ai la liste et la liste ordonnée :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
    [Serializable]
    public abstract class _ObservableLookupBase<T> : ObservableCollection<_ObservableLookupItemBase<T>>
    {
 
    }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
    [Serializable]
    public abstract class _OrderedLookupBase<T> : _LookupItemBase<T> where T : _OrderedLookupItemBase<T>
    {
    }
En commentaire ce que je n'arrive pas à faire.

La cerise sur le gâteau serait que lorsqu'une propriété d'un élément de la liste change ça cascade l'évent jusqu'à la liste...

Je vous promets, je me soigne pour ça, mais qu'est-ce que j'aime

D'avance merci pour votre aide...