Se ObservableCollectionpuede actualizar desde UI exactamente como cualquier colección. La verdadera diferencia es bastante sencilla:
ObservableCollection<T>implementa INotifyCollectionChangedque proporciona notificación cuando se cambia la colección (adivinó ^^) Permite que el motor de enlace actualice la IU cuando ObservableCollectionse actualiza.
Sin embargo, BindingList<T>implementos IBindingList.
IBindingListproporciona 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 BindingListretransmite notificaciones de cambio de elementos cuando se implementan sus elementos INotifyPropertyChanged. Si un artículo genera un PropertyChangedevento, BindingListlo recibirá y aumenta un ListChangedEventcon ListChangedType.ItemChangedy OldIndex=NewIndex(si un artículo fue reemplazado OldIndex=-1). ObservableCollectionno retransmite notificaciones de artículos.
Tenga en cuenta que en Silverlight, BindingListno está disponible como una opción: sin embargo, puede usar ObservableCollectionsy ICollectionView(y IPagedCollectionViewsi no recuerdo mal).