He creado una colección contenedora para ObservableCollection que se suscribe a cada elemento PropertyChanged y lo vuelve a generar como su propio evento ItemPropertyChanged. Hice esto usando un método similar al que describí here. ¿Hay una mejor manera? ¿Me estoy perdiendo otra colección .NET que ya tiene este tipo de comportamiento?Escuche el evento PropertyChanged de cualquier elemento en un ObservableCollection <INotifyPropertyChanged>
Respuesta
Ya había una publicación sobre esto en stackoverflow. También proporciona una implementación rápida de un nuevo tipo de colección que expone un evento para que funcione.
ver enlace: ObservableCollection that also monitors changes on the elements in collection
Estoy de acuerdo, estaba buscando una manera "mejor" que suscribirme a cada elemento infantil de la colección. – chilltemp
Estoy asumiendo que usted está disparando este evento con el fin de calcular un agregado. Tengo una solución diferente a este problema. Considere usar Update Controls with linq. Puede describir declarativamente su agregado con linq, y Update Controls rastreará sus dependencias dentro de su colección. Cada vez que la colección cambia, o cualquiera de las propiedades referenciadas cambia, entonces reevaluará el agregado.
Simplemente use System.ComponentModel.BindingList<T>
en su lugar. El evento ListChanged
se activará cuando cualquier elemento en la lista se dispare INotifyPropertyChanged
.
- 1. ObservableCollection y CollectionChanged Evento
- 2. Escuche el clic derecho en el elemento svg con Raphael.js
- 3. Vinculable ObservableCollection <> a un TextBox
- 4. ObservableCollection <> vs. List <>
- 5. C# ListBox ObservableCollection <T>
- 6. Escuche el primer evento TouchEvent al usar SYSTEM_UI_FLAG_HIDE_NAVIGATION
- 7. ¿Cómo funciona ObservableCollection <T> .Add?
- 8. Cómo detectar si un elemento en mi ObservableCollection ha cambiado
- 9. ¿Cómo me suscribo al evento PropertyChanged en mi ViewModel?
- 10. BlockReentrancy en ObservableCollection <T>
- 11. Eliminar un elemento de un ObservableCollection en un controlador de eventos CollectionChanged
- 12. C# HashSet <T> rendimiento de búsqueda (en comparación con un ObservableCollection <T>)?
- 13. Prueba de evento PropertyChanged: ¿es esta una buena manera?
- 14. ¿Cómo puedo echar en un ObservableCollection <object>
- 15. ¿Cómo puedo vincular un ObservableCollection a TextBoxes en un DataTemplate?
- 16. <style> etiqueta dentro de cualquier elemento seguirá funcionando?
- 17. Uso de Rx (extensiones reactivas) para ver el elemento específico en ObservableCollection
- 18. Usando un ObservableCollection <T> con Subprocesos de fondo
- 19. Conseguir un WPF ListView para mostrar ObservableCollection <T> usando enlace de datos
- 20. ¿Cómo insertar un elemento al comienzo de una ObservableCollection?
- 21. Prueba ViewModel PropertyChanged Eventos
- 22. IList <T> a ObservableCollection <T>
- 23. Lista <string> Evento INotifyPropertyChanged
- 24. WPF ObservableCollection <T> vs BindingList <T>
- 25. Invertir un ObservableCollection <objectType> usando linq
- 26. PropertyChanged de la propiedad indexador
- 27. En HTML5, ¿el elemento <form> es un elemento de sección, como <section>?
- 28. ¿Cómo funciona ObservableCollection <T> .Move (int, int)?
- 29. Actualice un ObservableCollection con un trabajador de fondo en MVVM
- 30. Hacer doble clic en un evento en el elemento JList
Parece que podría ser bastante caro cuando, por ejemplo, construir una colección muy grande. Espero que haya una mejor opción. – kbrimington
No hay ninguno que haya visto. – bporter
¿Cuál es el propósito de crear su propio evento en lugar de utilizar las interfaces estándar INotifyPropertyChanged/ICollectionChanged? – Goblin