---
title: "difference between ObservableCollection and BindingList in wpf?"  
description: "difference between ObservableCollection and BindingList in wpf?"  
author: "Anonymous User"  
published: 2013-08-10  
updated: 2013-08-10  
canonical: https://www.mindstick.com/forum/1367/difference-between-observablecollection-and-bindinglist-in-wpf  
category: "wpf"  
tags: ["wpf"]  
reading_time: 2 minutes  

---

# difference between ObservableCollection and BindingList in wpf?

\

I want to know the [difference](https://www.mindstick.com/articles/157114/good-news-or-bad-news-and-the-difference-is) between [ObservableCollection](https://www.mindstick.com/forum/1368/should-i-use-an-observablecollection-for-images-in-wpf) and BindingList because I've used both to [notify](https://www.mindstick.com/interview/753/what-methods-java-providing-for-thread-communications) for any [add](https://www.mindstick.com/forum/12983/add-address-in-textbox-when-page-is-load-and-if-i-search-address-in-textbox-show-in-map-by-javascript)/[delete](https://www.mindstick.com/forum/33620/how-to-delete-record-from-list-in-mvc-using-ajax) change in [Source](https://www.mindstick.com/interview/840/what-happens-if-the-both-source-and-destination-are-named-same), but I actually do not know when to prefer one over the other.

Why would I [choose one](https://www.mindstick.com/forum/159291/what-are-some-popular-alternatives-to-mern-stacks-and-when-you-should-choose-one-over-the-other) of the following over the other?

ObservableCollection<[Employee](https://www.mindstick.com/articles/85431/remote-employee-training-tips-tricks)> lstEmp = new ObservableCollection<Employee>();

or

BindingList<Employee> lstEmp = new BindingList<Employee>();

## Replies

### Reply by Pravesh Singh

An ObservableCollection can be updated from UI exactly like any collection. The true difference is rather straightforward:

ObservableCollection<T> implements INotifyCollectionChanged which provides notification when the collection is changed (you guessed ^^) It allows the binding engine to update the UI when the ObservableCollection is updated.

However, BindingList<T> implements IBindingList.

IBindingList provides notification on collection changes, but not only that. It provides a whole bunch of functionality which can be used by the UI to provide a lot more things than only UI updates according to changes, like:

· Sorting

· Searching

· Add through factory (AddNew member function).

· Readonly list (CanEdit property)

All these functionalities are not available in ObservableCollection<T>

Another difference is that BindingList relays item change notifications when its items implement INotifyPropertyChanged. If an item raises a PropertyChanged event, the BindingList will receive it an raises a ListChangedEvent with ListChangedType.ItemChanged and OldIndex=NewIndex (if an item was replaced, OldIndex=-1). ObservableCollection doesn't relay item notifications.

Note that in Silverlight, BindingList is not available as an option: You can however use ObservableCollections and ICollectionView (and IPagedCollectionView if I remember well).


---

Original Source: https://www.mindstick.com/forum/1367/difference-between-observablecollection-and-bindinglist-in-wpf

Copyright © MindStick Software Pvt. Ltd. This Markdown version is provided for developers, AI systems, and offline reading.
