Se ObservableCollection
puede actualizar desde UI exactamente como cualquier colección. La verdadera diferencia es bastante sencilla:
ObservableCollection<T>
implementa INotifyCollectionChanged
que proporciona notificación cuando se cambia la colección (adivinó ^^) Permite que el motor de enlace actualice la IU cuando ObservableCollection
se actualiza.
Sin embargo, BindingList<T>
implementos IBindingList
.
IBindingList
proporciona notificaciones sobre cambios en la colección, pero no solo eso. Proporciona un montón de funcionalidades que la interfaz de usuario puede usar para proporcionar muchas más cosas que solo actualizaciones de la interfaz de usuario de acuerdo con los cambios, como:
- Clasificación
- buscando
- Agregar a través de la fábrica (función de miembro AddNew).
- Lista de solo lectura (propiedad CanEdit)
Todas estas funcionalidades no están disponibles en ObservableCollection<T>
Otra diferencia es que BindingList
retransmite notificaciones de cambio de elementos cuando se implementan sus elementos INotifyPropertyChanged
. Si un artículo genera un PropertyChanged
evento, BindingList
lo recibirá y aumenta un ListChangedEvent
con ListChangedType.ItemChanged
y OldIndex=NewIndex
(si un artículo fue reemplazado OldIndex=-1
). ObservableCollection
no retransmite notificaciones de artículos.
Tenga en cuenta que en Silverlight, BindingList
no está disponible como una opción: sin embargo, puede usar ObservableCollection
sy ICollectionView
(y IPagedCollectionView
si no recuerdo mal).