ObservableCollection和List的使用场合,分以下四种情况:
1.最简单的是只用List<T>,T不实现INotifyPropertyChanged接口,适用于一次性绑定,适用于重新实例化整个List集合的绑定。
2.List<T>,并且T实现INotifyPropertyChanged接口,因为INotifyPropertyChanged接口只是监测T,而没有监视List<T>集合。所以修改单笔T数据,可以发送通知给XAML,但是修改List<T>集合(比如增加数据,删除数据),就需要另辟蹊径。
3.用ObservableCollection<T>,T不实现INotifyPropertyChanged接口,适用于增删集合中的数据,但是对于单笔数据的更改就无能为力。
4.用ObservableCollection<T>,并且T实现了INotifyPropertyChanged接口,既可以赠删集合中的数据,又可修改单笔数据。
下面用一个Student类实现INotifyPropertyChanged接口:
</pre><pre name="code" class="csharp">public class Student : INotifyPropertyChanged
{
#region 事件
public event PropertyChangedEventHandler PropertyChanged;
#endregion
#region 变量
private int _Id;
private string _Name;
private bool _Sex;
private DateTime _Birthday;
#endregion
#region 构造函数
public Student() { }
#endregion
#region 属性
public int Id
{
set
{
_Id = value;
OnPropertyChanged("Id");
}
get { return _Id; }
}
public string Name
{
set
{
_Name = value;
OnPropertyChanged("Name");
}
get { return _Name; }
}
public bool Sex
{
set
{
_Sex = value;
OnPropertyChanged("Sex");
}
get { return _Sex; }
}
public DateTime Birthday
{
set
{
_Birthday = value;
OnPropertyChanged("Birthday");
}
get { return _Birthday; }
}
#endregion
#region 方法
protected void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion
}