zoukankan      html  css  js  c++  java
  • ObservableCollection<T> 类

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

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

    语法:

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

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

    可以枚举实现 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; }
          }
      }
  • 相关阅读:
    asp.net(C#)页面事件顺序
    C#多线程学习 之 线程池[ThreadPool]
    JS 获取浏览器窗口大小
    关于Json的那点事
    jquery 动态滚动
    Null,DBNull,String.Empty 区别 C# 转载
    js图片大小限制,设置
    mysql 自定义函数获取两点间距离
    KindleConverter:Word批量转换为6寸PDF
    在 Asp.NET MVC 中使用 SignalR 实现推送功能
  • 原文地址:https://www.cnblogs.com/zhangtao/p/2010595.html
Copyright © 2011-2022 走看看