list<T>与ObservableCollection<T>的用法基本上是一样的。

区别:

list<T>:

当T继承于INotifyPropertyChanged时,如果list<T>中的属性发生改变,则通知UI属性值已发生改变。但当list<T>添加一项时,list<T>就无法通知前端UI了(此时,ObservableCollection<T>闪亮登场)。

ObservableCollection<T>:

当ObservableCollection<T>添加一行时,会自动通知绑定该ObservableCollection<T>的控件并做相应修改。如果希望当ObservableCollection<T>中的属性发生改变时通知UI,则T也需要继承于INotifyPropertyChanged。


下边是INotifyPropertyChanged的用法,当属性改变的话,会直接改变UI上面的值,只要是绑定的实体类继承INotifyPropertyChanged

 1 public class Student : INotifyPropertyChanged
 2     {
 3         public event PropertyChangedEventHandler PropertyChanged;
 4 
 5         private int _SID;
 6 
 7         public int SID
 8         {
 9             get { return _SID; }
10             set { 
11                 _SID = value;
12                 if (PropertyChanged != null)
13                 {
14                     PropertyChanged(this, new PropertyChangedEventArgs("SID"));
15                 }
16             }
17         }
18         private string _SName;
19 
20         public string SName
21         {
22             get { return _SName; }
23             set { 
24                 _SName = value;
25                 if (PropertyChanged != null)
26                 {
27                     PropertyChanged(this, new PropertyChangedEventArgs("SName"));
28                 }
29             }
30         }
31         private string _Address;
32 
33         public string Address
34         {
35             get { return _Address; }
36             set { 
37                 _Address = value;
38                 if (PropertyChanged != null)
39                 {
40                     PropertyChanged(this, new PropertyChangedEventArgs("Address"));
41                 }
42             }
43         }
44     }