c#访问ObservableCollection作为基础

时间:2016-10-25 08:25:14

标签: c# wpf observablecollection

我有一个基于Observable集合的类。我正在尝试使用方法clone从项目列表中设置Observablecollection,如下所示:

   public class MyObservableCollection : ObservableCollection<Record> 
    {
        public void Clone(List<Record> originalEnityList) 
        {
            ObservableCollection<Record> cloned = new ObservableCollection<Record>(originalEnityList);
        }
    }

我想要做的是将克隆的集合复制到基本ObservableCollection,如:

    this=  new ObservableCollection<Record>(originalEnityList);
or
    this=cloned;

我该怎么做?

我尝试了以下但没有任何进展:

  1. ObservableCollection mine = this; mine = cloned;(设置矿山集合时,基础集合仍为空)。
  2. 我尝试从课外进行,但没有运气,例如MyObservableCollection coll = new ObservableCollection<Record>(originalEnityList);但我相信MyObervableCollection缺少observablecollection的新构造函数。
  3. PS:我曾尝试使用foreach和填充集合,但因为我的集合非常大,所以需要花费太多时间。

    我很确定我在这里错过了一些非常简单的东西。

1 个答案:

答案 0 :(得分:1)

您只需添加一个将源集合作为参数的构造函数:

public class MyObservableCollection : ObservableCollection<Record> 
{
    public MyObservableCollection()
    {
    }

    public MyObservableCollection(List<Record> originalEntityList)
        : base(originalEntityList)
    {
    }
}

使用静态Clone方法

private static List<Record> Clone(List<Record> originalEntityList)
{
    return ...
}

你可以像这样编写第二个构造函数:

public MyObservableCollection(List<Record> originalEntityList)
    : base(Clone(originalEntityList))
{
}