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 }
浙公网安备 33010602011771号