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. Lock方法是用于数据库的锁机制,

    Lock方法是用于数据库的锁机制,如果在查询或者执行操作的时候使用: lock(true); 复制代码   就会自动在生成的SQL语句最后加上 FOR UPDATE或者FOR UPDATE NOWAI ...

  2. AnsiString, String, char,char

    AnsiString 是一个类,String 是一个结构,char* 是一个指针 .String是Pascal的类型原型,因为C++中没有字符串数据类型的,因此使用char*来存储,char*必须是以 ...

  3. Joomla - 后台系统(功能简介)

    Joomla - 后台系统简介 全局配置

  4. day 36 MySQL的库、表的详细操作

    MySQL的库.表的详细操作   MySQL数据库 本节目录 一 库操作 二 表操作 三 行操作 一 库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset u ...

  5. 04_Hibernate检索方式

    一.Hibernate检索方式概述 OID检索方式:按照对象的OID来检索对象(get/load) HQL检索方式:使用面向对象的HQL查询语言 QBC检索方式:使用QBC(Query By Crit ...

  6. c#设置文件及文件夹的属性

    c#中通过FileAttributes枚举来设置文件或文件夹的属性. FileAttributes 枚举 成员名称 说明 Archive 文件的存档状态.应用程序使用此属性为文件加上备份或移除标记. ...

  7. DROOLS通过URL访问changset

    package droolsRule; import java.net.Authenticator; import java.net.PasswordAuthentication; import ka ...

  8. bootstrap-select 插件示例

      本文原创地址:http://www.cnblogs.com/landeanfen/p/7457283.html 一.组件开源地址以及API说明 bootstrap-select开源地址:https ...

  9. 使用ResponseEntity进行返回json数据

    在最近的项目中,与上位机进行数据传输时,上位机需要服务器的响应得知服务器是否正常运行,数据是否正常发送 在最近的调试中我使用ResponseEntity<Map<String,Object ...

  10. std::unique_lock与std::lock_guard区别示例

    std::lock_guard std::lock_guard<std::mutex> lk(frame_mutex); std::unique_lock<std::mutex> ...