
移动
使用 ObservableCollection 的教程
ObservableCollection 是一个用于实现可观察集合的类,在 WPF 和 UWP 应用程序中广泛使用。它提供了一种方便的方式来管理集合中元素的更改,并自动更新 UI。本教程将介绍 ObservableCollection 的基本概念和用法,并提供一些示例代码。什么是 ObservableCollection?ObservableCollection 是 System.Collections.ObjectModel 命名空间中的一个类。它是 List 类的扩展,可用于存储和管理对象的集合。与普通的 List 类不同,ObservableCollection 具有能够自动通知 UI 元素更改的功能。ObservableCollection 实现了 INotifyCollectionChanged 接口和 INotifyPropertyChanged 接口。INotifyCollectionChanged 接口定义了集合更改事件的通知机制,而 INotifyPropertyChanged 接口定义了属性更改事件的通知机制。这些接口使得 ObservableCollection 在集合更改时能够及时通知绑定到它的 UI 元素。ObservableCollection 的用法要使用 ObservableCollection,首先需要在代码中创建一个实例。可以使用无参数构造函数创建一个空的 ObservableCollection,也可以使用带有初始元素的构造函数创建一个包含初始元素的 ObservableCollection。以下是创建和初始化 ObservableCollection 的示例代码:ObservableCollection<string> myCollection = new ObservableCollection<string>();myCollection.Add("Item 1");myCollection.Add("Item 2");myCollection.Add("Item 3");在创建 ObservableCollection 后,可以像操作普通的 List 一样操作它。可以使用 Add、Remove、Clear 等方法来添加、删除和清空集合中的元素。但是,与普通的 List 不同的是,当对 ObservableCollection 进行更改时,它会自动通知绑定到它的 UI 元素。这意味着,如果将 ObservableCollection 绑定到 ListView 或 DataGrid 等控件上,当集合更改时,这些控件将自动更新以反映更改。ObservableCollection 的事件ObservableCollection 提供了两个事件,用于在集合更改时通知 UI 元素。1. CollectionChanged 事件:当集合中的元素添加、删除、移动或清空时,将引发 CollectionChanged 事件。可以通过订阅该事件,在集合更改时执行自定义的操作。以下是订阅 CollectionChanged 事件的示例代码:myCollection.CollectionChanged += MyCollection_CollectionChanged;private void MyCollection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e){ // 在此处执行自定义操作}2. PropertyChanged 事件:当 ObservableCollection 的属性更改时,将引发 PropertyChanged 事件。可以通过订阅该事件,对属性更改作出响应。以下是订阅 PropertyChanged 事件的示例代码:myCollection.PropertyChanged += MyCollection_PropertyChanged;private void MyCollection_PropertyChanged(object sender, PropertyChangedEventArgs e){ // 在此处执行自定义操作}ObservableCollection 的案例代码下面是一个简单的案例代码,演示了如何使用 ObservableCollection 在 WPF 应用程序中管理一个学生集合的更改。假设我们有一个名为 Student 的类,其中包含学生的姓名和年龄属性。csharppublic class Student{ public string Name { get; set; } public int Age { get; set; }}public class MAInViewModel : INotifyPropertyChanged{ private ObservableCollection<Student> students; public ObservableCollection<Student> Students { get { return students; } set { students = value; OnPropertyChanged(nameof(Students)); } } public MAInViewModel() { Students = new ObservableCollection<Student>(); Students.CollectionChanged += Students_CollectionChanged; } private void Students_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { // 在此处执行集合更改时的逻辑 } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); }}在上述代码中,我们创建了一个名为 MAInViewModel 的类,它包含一个 Students 属性,该属性是一个 ObservableCollectionCopyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号