2016-10-25 62 views
0

我有一個類基地一個Observable集合。我想設置從與方法克隆項目的列表中的ObservableCollection,如下圖所示:c#訪問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 =克隆;(雖然礦藏已設置,但基本集合仍爲空)。
  2. 我試圖從課堂外做到這一點,也沒有運氣,就像MyObservableCollection coll = new ObservableCollection<Record>(originalEnityList);但我相信MyObervableCollection缺少observablecollection具有的新構造函數。

PS:我試圖使用foreach和爲了填充集合,但因爲我的集合非常大,它需要太多的時間。

我很確定我錯過了一些非常簡單的東西。

+0

「但我相信MyObervableCollection缺少obse的新構造函數rvablecollection有「。那你爲什麼不加一個? – Clemens

+0

在這種情況下,我將不得不從可觀察集合實現新的構造函數,如: public ObservableCollection(List list); 但隨後的問題是我怎麼能轉換爲基本對象名單像 公共無效克隆(名單 originalEnityList) { 的ObservableCollection 克隆=新的ObservableCollection (originalEnityList); //此克隆對象應被鑄造或克隆到基礎對象 } –

回答

1

你可以簡單地添加一個構造函數源集合作爲參數:

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

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

對於靜態Clone methold像

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

你可以寫第二個構造是這樣的:

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

您搖滾。我知道這將是一件非常簡單的事情(有時候頭腦會停止正常工作)。感謝並投票並接受 –

+0

@PanagiotisEhχαρίστως – Clemens

+1

Ναείσαικαλάαδερφέγιατηνβοήθεια(τομυαλλόκολάειεκείπουδεντοπεριμένεις)。 –