首页 > 其他分享 >INotifyCollectionChanged 用法简介

INotifyCollectionChanged 用法简介

时间:2023-12-17 10:22:05浏览次数:30  
标签:Console INotifyCollectionChanged NotifyCollectionChangedAction 简介 Move collectio

INotifyCollectionChanged 接口是 System.Collections.Specialized 命名空间中的一个接口,用于在集合发生更改时通知订阅者。这个接口通常在实现了集合的类中使用,以便在集合变化时通知监听者(如 UI 控件)进行更新。

以下是 INotifyCollectionChanged 的关键成员:

CollectionChanged 事件: 当集合发生变化时触发的事件。这个事件包含一个 NotifyCollectionChangedEventArgs 参数,该参数提供了有关集合变化的详细信息,如变化的类型(添加、移除、替换等)、受影响的索引和元素。

NotifyCollectionChangedEventArgs 类: 包含有关集合变化的详细信息的类。常见的属性包括:

Action:表示变化的类型,是一个 NotifyCollectionChangedAction 枚举值,包括 Add、Remove、Replace、Move 和 Reset。
NewItems:在 Add、Replace 和 Move 操作中,表示添加或替换的新元素的集合。
OldItems:在 Remove、Replace 和 Move 操作中,表示移除或替换的旧元素的集合。
NewStartingIndex 和 OldStartingIndex:在 Move 操作中,表示移动操作的起始索引。

using System;
using System.Collections.ObjectModel;
using System.Collections.Specialized;

public class ExampleCollection : ObservableCollection<string>
{
    public ExampleCollection()
    {
        this.CollectionChanged += OnCollectionChanged;
    }

    private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
    {
        Console.WriteLine($"Collection changed: {e.Action}");

        switch (e.Action)
        {
            case NotifyCollectionChangedAction.Add:
                Console.WriteLine($"Added item(s): {string.Join(", ", e.NewItems)}");
                break;

            case NotifyCollectionChangedAction.Remove:
                Console.WriteLine($"Removed item(s): {string.Join(", ", e.OldItems)}");
                break;

            case NotifyCollectionChangedAction.Replace:
                Console.WriteLine($"Replaced item(s): {string.Join(", ", e.NewItems)}");
                break;

            case NotifyCollectionChangedAction.Move:
                Console.WriteLine($"Moved item(s) from index {e.OldStartingIndex} to {e.NewStartingIndex}");
                break;

            case NotifyCollectionChangedAction.Reset:
                Console.WriteLine("Collection was reset");
                break;
        }
    }
}

class Program
{
    static void Main()
    {
        ExampleCollection collection = new ExampleCollection();

        collection.Add("Item 1");
        collection.Add("Item 2");

        collection.Remove("Item 1");

        collection[0] = "New Item 1";
    }
}


标签:Console,INotifyCollectionChanged,NotifyCollectionChangedAction,简介,Move,collectio
From: https://www.cnblogs.com/johnyang/p/17908811.html

相关文章

  • crontab 用法介绍
    一、crontab概述1、crontab是Linux和类Unix操作系统下的一个任务调度工具,用于周期性地执行指定的任务或命令。2、crontab存储在文件中,该文件位于/var/spool/cron/目录中。3、除了管理员,可以将命令添加到crontab中,通常用户需要执行周期性操作时使用。二、crontab语法1、crontab语......
  • Modbus和Profinet通信协议简介
    Modbus和Profinet通信协议简介Modbus是一种通信协议,广泛应用于工业自动化领域。它通过串口或以太网等物理介质实现设备间的数据交换。Modbus采用主从结构,主设备负责发起通信请求,从设备则负责响应请求并提供数据。Modbus具有简单、可靠、易于实现的特点,被广泛用于传感器、执行器、P......
  • 通信系统之TDM技术和FDM技术简介
    在通信系统中,TDM和FDM是两种重要的复用技术,它们各自有着独特的工作方式和优点。TDM(时分复用)是一种将时间作为资源的共享方式,将时间划分为不同的时隙,每个时隙分配给不同的用户或数据流。即使在同一个频段上,也可以通过不同的时隙来区分不同的数据流,从而实现数据的并行传输。采用TD......
  • Swagger文档生成艺术:掌握@ApiModel和@ApiModelProperty的用法
    在现代软件开发中,提供清晰全面的 API文档 至关重要。@ApiModel 和 @ApiModelProperty 这样的代码注解在此方面表现出色,通过增强模型及其属性的元数据来丰富文档内容。它们的主要功能是为这些元素命名和描述,使生成的API文档更加明确。@ApiModel 和 @ApiModelProperty 的......
  • 盘点 swift 中 where 关键字的所有用法,你知道多少?
    盘点swift中where关键字的所有用法,你知道多少?杂雾无尘博观而约取,厚积而薄发​关注他 关注我,每天分享一个关于iOS的新知识   前言where 是Swift中一个强大的关键字,可以轻松过滤掉一些值。它可以用于许多不同的表达式中,今天就来盘点......
  • sqlmap的配置及基本用法
    SQLMap是一款非常强大的开源SQL注入测试工具,它能够帮助我们发现并利用潜在的SQL注入漏洞。SQLMap是基于Python开发的自动化SQL注入工具,其原理是通过构造恶意SQL查询语句,探测和利用目标网站的SQL注入漏洞。SQLMap通过发送不同类型的SQL查询请求,从而判断目标网站是否存在SQL注入漏洞,......
  • linux下的抓包工具tcpdump命令用法
     ############linux下的抓包工具tcpdump命令详解#########tcpdump命令--详解 tcpdump是工作中必用的一道指令,如果熟悉掌握,将会很快的帮你解决问题!先看看tcpdump的具体参数及意义:-i:指定tcpdump监听的网络接口-s:指定要监听数据包的长度-c:指定要监听的数据包数量,达到指定......
  • java: MappedByteBuffer的用法
    packagenio;importjava.io.RandomAccessFile;importjava.nio.MappedByteBuffer;importjava.nio.channels.FileChannel;publicclassMappedByteBufferTest{publicstaticvoidmain(String[]args)throwsException{RandomAccessFilerandomAccessF......
  • EFCore 简介(1)
    EFCore是微软的一个ORM框架,全称:Microsoft.EntityFrameworkCoreORM(ObjectRelationalMapping):对象关系映射,让开发者用对象的形式操作关系数据库常用的ORM框架:EF、EFCore、Dapper、SqlSugar、Freesql每种ORM都有自己的优缺点EFCore有两种模式:DBFirst(数据库优先)和CodeFirst(代码优......
  • 一、Mapster简介
    一、Mapster简介1、什么是Mapster(官方文档地址:https://github.com/MapsterMapper/Mapster)  Mapster是一个高性能的用于对象映射的类库,同类型的产品还有AutoMapper。它提供了一系列的API和工具,以下为几个重要的类和接口:@Adapt注解:用于将实体类映射到数据库表中的指定列上。@......