publicclassPerson { publicstring? Name { get; set; } publicstring? Home { get; set; } }
创建Person对象列表:
// 创建一个Person对象的列表 List<Person> people = new List<Person>() { new Person {Name = "张三",Home = "武汉" }, new Person {Name = "李四",Home = "南昌" }, new Person {Name = "王五",Home = "福州" }, };
publicstring Name { get { return _name; } set { _name = value; // Call OnPropertyChanged whenever the property is updated OnPropertyChanged("Name"); } } privatestring? _home;
publicstring Home { get { return _home; } set { _home = value; // Call OnPropertyChanged whenever the property is updated OnPropertyChanged("Home"); } }
// Declare the event publicevent PropertyChangedEventHandler? PropertyChanged; // Create the OnPropertyChanged method to raise the event protectedvoidOnPropertyChanged(string name) { var handler = PropertyChanged; handler?.Invoke(this, new PropertyChangedEventArgs(name)); } }
实现了INotifyPropertyChanged接口。
创建数据源:
// 创建一个Student对象的列表 BindingList<Student> students = new BindingList<Student>() { new Student { Name = "张三", Home = "武汉" }, new Student { Name = "李四", Home = "南昌" }, new Student { Name = "王五", Home = "福州" }, };
注意这里使用的是BindingList<T>而不是List<T>。
BindingList<T>与List<T>的区别
BindingList和 List都是用于存储对象的集合,但它们之间有一些关键的区别。
数据绑定支持:BindingList是为数据绑定设计的,它实现了 IBindingList 接口。这意味着当 BindingList中的数据发生更改时(例如,添加、删除或修改项),它会自动通知绑定到它的任何 UI 控件。这对于 Windows Forms 或 WPF 这样的 UI 框架非常有用,因为它们可以自动更新以反映数据的更改。相比之下,List不支持数据绑定。