zoukankan      html  css  js  c++  java
  • ObservableCollection 类

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

    命名空间: 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; }
          }
      }
  • 相关阅读:
    C++指针使用方法解惑
    2007中国手机网络游戏TOP10和2006中国手机网络游戏回顾
    美丽的诗
    三分钟就知道谁是你最爱的人
    基于先进思想指导的信息化
    Nginx 常见应用技术指南
    Web开发与设计之Google兵器谱Web开发与设计利器
    openssl建立证书,非常详细配置ssl+apache
    Nginx 二级子域名完美方案
    正则表达式30分钟入门教程
  • 原文地址:https://www.cnblogs.com/wpf123/p/2052891.html
Copyright © 2011-2022 走看看