7 votes

Écoute l'événement PropertyChanged de tout élément d'une ObservableCollection<INotifyPropertyChanged>.

J'ai créé une collection enveloppante pour ObservableCollection qui souscrit à l'événement PropertyChanged de chaque élément et le renvoie comme son propre événement ItemPropertyChanged. J'ai utilisé une méthode similaire à celle que j'ai décrite. ici . Existe-t-il un meilleur moyen ? Ai-je manqué une autre collection .NET qui a déjà ce type de comportement ?

0voto

Michael L Perry Points 2380

Je suppose que vous déclenchez cet événement afin de calculer un agrégat. J'ai une solution différente à ce problème. Envisagez d'utiliser Mise à jour des contrôles avec linq . Vous pouvez décrire votre agrégat de manière déclarative avec linq, et Update Controls suivra ses dépendances au sein de votre collection. Chaque fois que la collection change, ou que l'une des propriétés référencées change, l'agrégat est réévalué.

0voto

Scott Chamberlain Points 32782

Il suffit d'utiliser System.ComponentModel.BindingList<T> à la place. Le site ListChanged qu'il possède se déclenchera lorsqu'un élément de la liste déclenchera son événement INotifyPropertyChanged .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X