2009-06-11 13 views
5

Quiero monitorear los cambios en un CollectionView pero el evento CollectionChanged está protegido. ¿Cómo debería hacer esto? Seguramente debe haber una forma de suscribirse a este evento; los controles de lista deben hacer esto de alguna manera.¿Por qué está protegido CollectionView.CollectionChanged?

Puedo lanzar SourceCollection a INotifyCollectionChanged y agregar un evento allí, pero eso parece innecesariamente desordenado.

+0

Bueno, aparentemente fue intencionalmente "escondido" del acceso público ... No sé por qué exactamente, pero lo que estás tratando de hacer es probablemente lo que querían evitar;) –

Respuesta

1

¿Por qué no está utilizando un ObservableCollection en su lugar?

+2

Porque estoy filtrando la colección. – Grokys

+1

... y necesita la funcionalidad de CurrentItem para que CollectionView tenga sentido. – Grokys

3

... los controles de lista deben hacer esto de alguna manera.

Puedo convertir SourceCollection en INotifyCollectionChanged y agregar un evento allí, pero parece innecesariamente desordenado.

De hecho, así es exactamente como lo hacen los controles de lista. Esto es a partir del código fuente de ItemsControl (que se encuentra a través de http://www.dotnetframework.org/):

((INotifyCollectionChanged)_items).CollectionChanged += new NotifyCollectionChangedEventHandler(OnItemCollectionChanged); 

Usted probablemente está destinado a exponer sus CollectionViews como la interfaz, ICollectionView, que a su vez hereda INotifyCollectionChanged, así como proporcionar propiedades CollectionView como CurrentItem.

Cuestiones relacionadas