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

命名空间: System.Collections.ObjectModel
程序集: System(在 System.dll 中)
用于 XAML 的 XMLNS:未映射到 xmlns。

语法:

[SerializableAttribute]
  public class ObservableCollection<T> : Collection<T>,
      INotifyCollectionChanged, INotifyPropertyChanged

在许多情况下,所使用的数据是对象的集合。例如,数据绑定中的一个常见方案是使用 ItemsControl(如 ListBox、 ListView 或 TreeView)来显示记录的集合。

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

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

在实现自己的集合之前,请先考虑使用 ObservableCollection< T> 或一个现有的集合类,如 List< T> 、 Collection< T> 和 BindingList< T> 等。 如果有高级方案并且希望实现自己的集合,请考虑使用 IList,它提供可以通过索引逐个访问的对象的非泛型集合。 如果实现 IList,则将使用数据绑定引擎提供最佳性能。

关于 XAML 用法的说明

ObservableCollection< T> 可在 Windows Presentation Foundation (WPF) 3.0 和 3.5 版本中的一个 XAML 对象元素使用。 但是,使用情况有众多限制。

  • ObservableCollection< T> 必须是根元素,因为指定泛型 ObservableCollection< T> 的约束类型所必须使用的 x:TypeArguments 特性只在根元素的对象元素上受支持。

  • 您必须声明一个 x:Class 特性(此属性要求该 XAML 文件的生成操作必须是 Page 或某种编译 XAML 的其他生成操作)。

  • ObservableCollection< T> 所在的命名空间和程序集最初未映射到默认的 XML 命名空间。 您必须为该命名空间和程序集映射一个前缀,然后在 ObservableCollection< T> 的对象元素标记上使用该前缀。

在应用程序中使用 XAML 的 ObservableCollection< T> 功能的一种更直接的方法是声明自己的非泛型自定义集合类,该类派生自 ObservableCollection< T> 并将其约束为特定类型。 然后映射包含此类的程序集,并将其作为 XAML 中的对象元素进行引用。

public class NameList : ObservableCollection<PersonName>
{
    public NameList() : base()
    {
        Add(new PersonName("Willa", "Cather"));
        Add(new PersonName("Isak", "Dinesen"));
        Add(new PersonName("Victor", "Hugo"));
        Add(new PersonName("Jules", "Verne"));
    }
  }

public class PersonName
  {
      private string firstName;
      private string lastName;

public PersonName(string first, string last)
      {
          this.firstName = first;
          this.lastName = last;
      }

public string FirstName
      {
          get { return firstName; }
          set { firstName = value; }
      }

public string LastName
      {
          get { return lastName; }
          set { lastName = value; }
      }
  }

转载于:https://www.cnblogs.com/zhangtao/archive/2011/04/09/2347562.html

ObservableCollection 类相关推荐

  1. ObservableCollection 类 详解

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

  2. SilverLight学习笔记--Silverlight之数据绑定初探

    数据绑定(Data Binding)是用户界面UI和业务对象或其它数据提供者(data provider)的连接.用户界面对象称为目标,数据提供者成为数据源.   数据绑定帮助隔离应用程序的用户界面层 ...

  3. 《101 Windows Phone 7 Apps》读书笔记-PASSWORDS SECRETS

    课程内容 Ø 加密和解密 Ø 密码输入框 Ø 值转换 Ø DataTimeOffset Ø 可观察集合 Ø INotifyPropertyChanged事件 Passwords & Secre ...

  4. Unity应用架构设计(6)——设计动态数据集合ObservableList

    什么是 『动态数据集合』 ?简而言之,就是当集合添加.删除项目或者重置时,能提供一种通知机制,告诉UI动态更新界面.有经验的程序员脑海里迸出的第一个词就是 ObservableCollection.没 ...

  5. Windows Phone 7实现图片数据绑定

    Windows Phone 7实现图片数据绑定 首先我们使用ListBox来显示多张图片,然后在建立一个单独的页面来显示单独的一张图片. 1.我们建立一个Picture.xaml的页面,并使用List ...

  6. 闲话WPF之二一(WPF中的数据处理 [3])

    最近比较忙些,好多天没有写WPF了.今天,我们继续回到前面的话题:WPF中的数据处理.前面讲过,通过实现INotifyPropertyChanged,我们可以改变使任意的CLR对象支持WPF的绑定源. ...

  7. fiddler模拟服务器响应,fiddler模拟返回响应数据

    django ORM的外键操作 外键约束示例 #models操作如下 class HostInfo(models.Model): servername = models.CharField(max_l ...

  8. 深入浅出WPF学习笔记之Binding

    深入浅出WPF之Binding Binding Binding基础 Binding模型 把控件作为Binding源与Binding标记扩展 Binding的(Path)路径 Binding支持多级路径 ...

  9. 基于WPF的开发的知识点

    基于WPF的开发 一.XAML 语言 XAML被编译为BAML(Binary Application Markup Language)文件.通常,BAML文件比XAML更小,编译后的BAML都是Pre ...

最新文章

  1. python爬虫图片-如何用Python来制作简单的爬虫,爬取到你想要的图片
  2. Vue实例里this的使用
  3. 统一流控服务开源:基于.Net Core的流控服务
  4. 英特尔表示:元宇宙的路还很长
  5. opencv 高反差保留算法
  6. 网站缓存数据实时更新的实现
  7. 散酒到底多少钱才是纯酿的
  8. 内齿轮泵行业调研报告 - 市场现状分析与发展前景预测
  9. 机器学习算法之KNN算法
  10. Tomcat Session管理分析
  11. com词根词缀_英语词根字典 - 词根词缀大全 - 优词英语词根表
  12. Archlinux电源管理
  13. AIR202/208使用AT指令方式连接MQTT调试笔记
  14. 计算机科学理论数学研讨会,2017年奇异摄动理论及其应用学术研讨会会议-上海交通大学数学系.DOC...
  15. 【教程】win10下安装Biolinux双系统
  16. prometheus监控服务器基本信息+华为交换机设备
  17. vue项目怎么样去实现新窗口跳转_vue跳转方式(打开新页面)及传参操作示例
  18. 老计算机u盘无法启动不了怎么办,u盘无法启动怎么办 u盘无法启动解决方法【详解】...
  19. 单词学习-Unit8Text3-2(15年7月30日,第9天)
  20. Cmpp发送wappush

热门文章

  1. UVa455 Periodic Strings(kmp)
  2. 删除目录下指定文件中匹配行
  3. LeetCode Coin Change(动态规划)
  4. MyBatis Generator 详解
  5. 管理员端API——任仲行
  6. Luogu P1073 最优贸易【最短路/建反图】 By cellur925
  7. git上传文件到github
  8. cogs luogu 珠心算测试【noip2014 普及组】
  9. Django rest_framework 实用技巧
  10. 【7集iCore3基础视频】7-7 Qt5.2.1安装