【问题标题】:c# Access ObservableCollection as basec# 访问 ObservableCollection 作为基础
【发布时间】:2016-10-25 08:25:14
【问题描述】:

我有一个基于 Observable 集合的类。我正在尝试使用方法克隆从项目列表中设置 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=cloned;(在设置 mine 集合时,基本集合保持为空)。
  2. 我尝试在课堂外执行此操作,但也没有运气,例如 MyObservableCollection coll = new ObservableCollection&lt;Record&gt;(originalEnityList); 但我相信 MyObervableCollection 缺少 observablecollection 具有的新构造函数。

PS:我曾尝试使用 foreach 和 for 来填充集合,但因为我的集合非常大,所以需要太多时间。

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

【问题讨论】:

  • “但我相信 MyObervableCollection 缺少 observablecollection 拥有的新构造函数”。那你为什么不加一个呢?
  • 在这种情况下,我必须从 observable 集合中实现新的构造函数,例如: public ObservableCollection(List list);但接下来的问题是我如何才能将列表像 public void Clone(List originalEnityList) { ObservableCollection cloned = new ObservableCollection(originalEnityList); //这个克隆的对象应该被转换或克隆到基础对象 }

标签: c# wpf observablecollection


【解决方案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))
{
}

【讨论】:

  • 你摇滚。我知道这将是一件非常简单的事情(有时大脑会停止正常工作)。感谢并投票并接受
  • @Panagiotis Eυχαρίστως
  • Να είσαι καλά αδερφέ για την βοήθεια(το μυαλλό κολάει εκεί που δεν το περιμένεις)。
猜你喜欢
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
  • 2014-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-23
  • 1970-01-01
相关资源
最近更新 更多