i found a piece of code that use ObservableCollection but they can use list or any other collection related classes. can anyone tell me what is the benifit of using ObservableCollection.
ObservableCollection<Employee> empData = new ObservableCollection<Employee>
{
new Employee{Name="Diptimaya Patra", Contact="0000",
EmailID="diptimaya.patra@some.com", Country="India"},
new Employee{Name="Dhananjay Kumar", Contact="00020",
EmailID="dhananjay.kumar@some.com", Country="India"},
new Employee{Name="David Paul", Contact="1230",
EmailID="david.paul@some.com", Country="India"},
new Employee{Name="Christina Joy", Contact="1980",
EmailID="christina.joy@some.com", Country="UK"},
new Employee{Name="Hiro Nakamura", Contact="0000",
EmailID="hiro.nakamura@some.com", Country="Japan"},
new Employee{Name="Angela Patrelli", Contact="0000",
EmailID="angela.patrelli@some.com", Country="Japan"},
new Employee{Name="Zoran White", Contact="0000",
EmailID="diptimaya.patra@some.com", Country="Scotland"},
};
please discuss in detail. thanks
ObservableCollection
implementsINotifyPropertyChanged
. This interface exposes events that allow consumers of your collection to be notified when the contents of the collection change.This is mainly used when binding in WPF, for example let's say we have an
ObservableCollection<string>
:and this control in XAML:
The
ComboBox
will show the strings inside yourObservableCollection
. So far, this would have worked just fine with aList<string>
as well. However, if you now add some strings to the collection, for example:you will see that the contents of the
ComboBox
will be immediately updated and the string will be added to the list of options. This is all accomplished usingINotifyCollectionChanged
.The benefit of
ObservableCollection
is that it raises theCollectionChanged
event every time the collection is changed, and thePropertyChanged
event every time one of the properties of the collection is changed.In a similar way, if you want an object (which is not a collection) to raise an event every time one of its properties change, you should make it implement
INotifyPropertyChanged
.