https://blog.csdn.net/GongchuangSu/article/details/48832721

https://blog.csdn.net/hyman_c/article/details/50899321

聊作总结。

ObservableCollection< T >类表示一个动态数据集合,在添加项、移除项或刷新整个列表时,此集合将提供通知。

命名空间: System.Collections.ObjectModel

程序集:System.ObjectModel(在 System.ObjectModel.dll 中)

类型参数 T:集合中的元素类型

一、构造函数

  1. ObservableCollection< T >():初始化 ObservableCollection< T > 类的新实例。
  2. ObservableCollection< T >(IEnumerable< T >):初始化 ObservableCollection< T > 类的新实例,该类包含从指定集合中复制的元素。
  3. ObservableCollection< T >(List< T >):初始化 ObservableCollection< T > 类的新实例,该类包含从指定列表中复制的元素。

二、属性

  1. Count:获取 Collection< T > 中实际包含的元素数。
  2. Item:获取或设置位于指定索引处的元素。
  3. 其它···

三、方法

  1. Add:将对象添加到 Collection< T > 的结尾处。
  2. Clear:从 Collection< T > 中移除所有元素。
  3. Contains:确定某元素是否在 Collection< T > 中。
  4. IndexOf:搜索指定的对象,并返回整个 Collection 中第一个匹配项的从零开始的索引。
  5. Insert:将元素插入 Collection< T > 的指定索引处。
  6. Remove:从 Collection 中移除特定对象的第一个匹配项。
  7. RemoveAt:移除 Collection 的指定索引处的元素。
  8. ToString:返回表示当前对象的字符串。
  9. 其它···

四、事件

CollectionChanged:在添加、移除、更改或移动项或者在刷新整个列表时发生。

五、说明

在许多情况下,所使用的数据是对象的集合。 例如,数据绑定中的一个常见方案是使用 ItemsControl(如 ListBox、ListView 或 TreeView)来显示记录的集合。ObservableCollection<T>就是一个主要用在WPF的控件和数据源的绑定中的集合,例如,

在xmal文件中,放置一个ListBox控件,名字叫做UserGroupListBox,ItemsSource设置如下:

<ListBox Name="UserGroupListBox" ItemsSource="{Binding Path=string,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}" Height="214" HorizontalAlignment="Left" Margin="6,64,0,0" VerticalAlignment="Top" Width="173" Loaded="UserGroupListBox_Loaded" SelectionChanged="UserGroupListBox_SelectionChanged" />

对应的cs文件中:

ObservableCollection<string> strlist=new ObservableCollection<string>();

....

UserGroupListBox.ItemsSource=strlist;

这里用ObservableCollection<T>,当strlist发生变化时,UserGroupListBox的界面也会实时更新,而是用List<T>等其他容器是就没有这种效果。

可以枚举实现 IEnumerable 接口的任何集合。 但是,若要设置动态绑定,以便集合中的插入或删除操作可以自动更新 UI,则该集合必须实现 INotifyCollectionChanged 接口。 此接口公开 CollectionChanged 事件,只要基础集合发生更改,都应该引发该事件。

WPF 提供 ObservableCollection 类,它是实现 INotifyCollectionChanged 接口的数据集合的内置实现。

为了完全支持将绑定源对象中的数据值传送到绑定目标,在支持可绑定属性的集合中的每个对象都必须实现适当的属性更改通知机制,如 INotifyPropertyChanged 接口。

ObservableCollection类的更多相关文章

  1. ObservableCollection 类

    假设您正在创建 Windows 窗体应用程序,并且已将 DataGridView 控件绑定到标准 List(Of Customer) 数据结构.您希望能够使网格中的项目与基础数据源中的值保持同步.也就 ...

  2. ObservableCollection

    1)可以使绑定控件与基础数据源保持同步2)还可以在您添加.删除.移动.刷新或替换集合中的项目时引发 CollectionChanged 事件3)还可以在您的窗口以外的代码修改基础数据时做出反应4)相互 ...

  3. 属性更改通知(INotifyPropertyChanged)——针对ObservableCollection

    问题 在开发webform中,wpf中的ObservableCollection<T>,MSDN中说,在添加项,移除项时此集合通知控件,我们知道对一个集合的操作是CURD但是恰恰没有Upd ...

  4. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  5. WPF 数据绑定Binding

    什么是数据绑定? Windows Presentation Foundation (WPF) 数据绑定为应用程序提供了一种简单而一致的方法来显示数据以及与数据交互. 通过数据绑定,您可以对两个不同对象 ...

  6. silverlight简单数据绑定3

    3种数据绑定模式  OneTime(一次绑定) OneWay(单项绑定) TwoWay(双向绑定) OneTime:仅在数据绑定创建时使用数据源更新目标. 列子: 第一步,创建数据源对象让Person ...

  7. 调用Ria Service中方法的各种方式

    前端界面后台: using System; using System.Collections.Generic; using System.Linq; using System.Net; using S ...

  8. wp7学习笔记

    1.xap:最终是压缩包:最终部署有系统控制,防止流亡软件:放到固有位置productid;有的文件放在.dll中或直接放入目录下:控制有生成操作:content,内容,content效率更高不用从. ...

  9. WPF学习之数据绑定

    WPF中的数据绑定提供了很强大的功能.与普通的WinForm程序相比,其绑定功能为我们提供了很多便利,例如Binding对象的自动通知/刷新,Converter,Validation Rules,Tw ...

随机推荐

  1. 1.spark核心RDD特点

    RDD(Resilient Distributed Dataset) Spark源码:https://github.com/apache/spark   abstract class RDD[T: C ...

  2. ansible 安装及基本使用

    1.yum 安装 yum -y install epel-releaseyum -y install ansible ansible 配置秘钥 ssh-keygen -t rsa #直接回车不用设置密 ...

  3. Java事件监听机制与观察者设计模式

    一. Java事件监听机制 1. 事件监听三要素: 事件源,事件对象,事件监听器 2. 三要素之间的关系:事件源注册事件监听器后,当事件源上发生某个动作时,事件源就会调用事件监听的一个方法,并将事件对 ...

  4. 2.vue插件总结——总有你能用上的插件

    UI组件 框架 element - 饿了么出品的Vue2的web UI工具套件 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开源 UI 组件库 Keen-UI - ...

  5. Laravel 5.8 添加服务层

    参考网址:https://blog.csdn.net/dmt742055597/article/details/97192177#Laravel58service_1

  6. php链表笔记:合并两个有序链表

    <?php /** * Created by PhpStorm. * User: huizhou * Date: 2018/12/2 * Time: 15:29 */ /** * 合并两个有序链 ...

  7. javascript 释放变量

    JavaScript 释放变量 在Javascript是可以使用“delete”来手动删除变量,通过这样的方法让GC(Garbage collection)来回收内存,但在JS中并不是所有的变量都可以 ...

  8. Android之divider分割线的使用

    1.divider分割线 三种实现方式:(1)添加一个view,(2)通过shape实现,(3)通过设置图片实现 相关属性:设置分割线,分割线位置(none(无),begining(开始),end(结 ...

  9. 《DSP using MATLAB》Problem 8.8

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  10. Python学习day36-并发编程(2)

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...