Bonjour,
quelles sont les differences entre utiliser une collection de donnees dynamiques (ObservableCollection) et une classe qui implemente INotifyPropertyChanged ?
Merci à vous
Bonjour,
quelles sont les differences entre utiliser une collection de donnees dynamiques (ObservableCollection) et une classe qui implemente INotifyPropertyChanged ?
Merci à vous
Je comprends pas trop la question à vrai dire. Les deux n'ont pas la même utilité. Une ObservableCollection n'est qu'un conteneur.
Retrouvez moi sur :
Mon Espace Developpez.com-------------------------------
Dvp.NET, une librairie open-source de composants .NET
Mon blog: Up there in the code----------------------------
Twitter: NatMarchand
Ma société: So@t
Showrizo : Suivez votre planning de séries télé sous Windows 8
C'est un conteneur de donnees dynamique, mais faire une IList d'un objet implementant INotifyPropertyChanged cela reviendrait il au meme ?
Cela revient au même à peu près.
Pourquoi vouloir recréer la roue ?
Retrouvez moi sur :
Mon Espace Developpez.com-------------------------------
Dvp.NET, une librairie open-source de composants .NET
Mon blog: Up there in the code----------------------------
Twitter: NatMarchand
Ma société: So@t
Showrizo : Suivez votre planning de séries télé sous Windows 8
Moi => "au même à peu près"
Nathanael => "à peu près au même"
J'ouvre mon Bescherelle pour vérifier pour voir la différence parce que moi je n'en vois pas.![]()
Ok j'economise l'implementation donc, c'est bien ce que j'avais compris.
Merci à vous
Vous parlez en fait de deux choses différentes. Attention de ne pas confondre INotifyCollectionChanged et INotifyPropertyChanged. La première notifie des changements dans une collection(ajout, suppression, déplacement) et la seconde notifie des changements de valeur d'une propriété donnée d'une instance d'une classe.
Est-ce plus clair ainsi ?
Bon courage sur la voie de WPF ;-)
Retrouvez moi sur :
Mon Espace Developpez.com-------------------------------
Dvp.NET, une librairie open-source de composants .NET
Mon blog: Up there in the code----------------------------
Twitter: NatMarchand
Ma société: So@t
Showrizo : Suivez votre planning de séries télé sous Windows 8
Jmix90 merci pour ces précisions.
Là où je suis je ne peux pas tester si ce que tu dis est vrai ou pas mais t'es sûr que l'interface INotifyPropertyChanged est impémenté pour qu'on puisse rendre la propriété Count notifiante parce qu'il y a quelques mois tu avais dit ça qui correspond au contraire ( bon il s'agit de WP7 et là de WPF).
OK je vais tester ce soir.![]()
Celui de List<T> n'est pas notifiant et j'avais émis l'hypothèse que celui de ObservableCollection<T> l'était peut être (cf dernier post). Depuis j'ai vérifié et utilisé la chose
Exemple pour un Remove:
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 protected override void RemoveItem(int index) { this.CheckReentrancy(); T t = base[index]; base.RemoveItem(index); this.OnPropertyChanged("Count"); this.OnPropertyChanged("Item[]"); this.OnCollectionChanged(NotifyCollectionChangedAction.Remove, t, index); }
Retrouvez moi sur :
Mon Espace Developpez.com-------------------------------
Dvp.NET, une librairie open-source de composants .NET
Mon blog: Up there in the code----------------------------
Twitter: NatMarchand
Ma société: So@t
Showrizo : Suivez votre planning de séries télé sous Windows 8
+1
Cool Par défaut elle ne notifie pas son changement.
Donc il va falloir tripatouiller en redéfinissant les méthodes Add et Remove en notifiant dans les implémentations que la propriété a changé.
Du coup INotifyPropertyChanged est là pour autre chose je pense. Qui sait ? Peut-être que l'équipe .Net a juste mis l'interface pour que ça soit dispo au cas où elle en aurait besoin.![]()
On s'est mal compris je pense
List<T> ne notifie rien du tout.
ObservableCollection<T> notifie via CollectionChanged et aussi via un PropertyChanged de Count. Cependant un controls dérivant de ItemsControl il s'en fout un peu du Count qui change, il écoute CollectionChanged
Le code que j'ai mis c'est la décompilation du Remove de ObservableCollection et on voit bien qu'il lève l'évènement pour Count et Item[].
Retrouvez moi sur :
Mon Espace Developpez.com-------------------------------
Dvp.NET, une librairie open-source de composants .NET
Mon blog: Up there in the code----------------------------
Twitter: NatMarchand
Ma société: So@t
Showrizo : Suivez votre planning de séries télé sous Windows 8
Ok je vais me reposer je vois que le café que j'ai pris n'a rien servi
![]()
Partager