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 ?
Réponses
Trop de publicités?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é.
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
.