C# 关于当ObservableCollection增删查改元素时,触发事件用例

ObservableCollection 类提供了一种实时监测集合变化的机制,可以通过订阅 CollectionChanged 事件来响应集合的添加、移除和重置等变化。

csharp 复制代码
using System;
using System.Collections.ObjectModel;
using System.Collections.Specialized;

class Program
{
    static void Main()
    {
        ObservableCollection<string> collection = new ObservableCollection<string>();

        // 订阅 CollectionChanged 事件
        collection.CollectionChanged += Collection_CollectionChanged;

        // 向集合中添加元素
        collection.Add("item 1");
        collection.Add("item 2");
        collection.Add("item 3");

        // 从集合中移除元素
        collection.Remove("item 2");

        // 清空集合
        collection.Clear();
    }

    static void Collection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
    {
        if (e.Action == NotifyCollectionChangedAction.Add)
        {
            Console.WriteLine("元素已添加:");

            foreach (string item in e.NewItems)
            {
                Console.WriteLine(item);
            }
        }
        else if (e.Action == NotifyCollectionChangedAction.Remove)
        {
            Console.WriteLine("元素已移除:");

            foreach (string item in e.OldItems)
            {
                Console.WriteLine(item);
            }
        }
        else if (e.Action == NotifyCollectionChangedAction.Reset)
        {
            Console.WriteLine("集合已重置");
        }
    }
}

Tips

在 ObservableCollection 中,如果你更改了集合中的元素,例如修改了元素的属性,这将会触发 CollectionChanged 事件。

但是如果你只是替换了集合中的元素(即通过索引直接赋值),这将不会触发 CollectionChanged 事件

相关推荐
kevin_水滴石穿17 小时前
C#获取程序集和文件版本
开发语言·c#
we1less17 小时前
[audio] AudioTrack (五) 共享内存创建分析
android·java·开发语言
傻啦嘿哟17 小时前
实战:用GraphQL接口高效采集数据
开发语言·驱动开发·php
JIngJaneIL17 小时前
基于java + vue连锁门店管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
秃了也弱了。17 小时前
python实现离线文字转语音:pyttsx3 库
开发语言·python
superman超哥17 小时前
Rust 减少内存分配策略:性能优化的内存管理艺术
开发语言·后端·性能优化·rust·内存管理·内存分配策略
t1987512817 小时前
基于射线理论的水声信道仿真MATLAB程序
开发语言·matlab
bu_shuo18 小时前
MATLAB与Simulink介绍
开发语言·matlab·simulink
吃西瓜的年年18 小时前
5.C语言流程控制语句
c语言·开发语言
萧曵 丶18 小时前
Java 泛型详解
java·开发语言·泛型