2016-03-01 51 views
0

我的ObservableCollection如何添加的ObservableCollection到其他的ObservableCollection C#

ICollection<Clip> Clipcol = new ICollection<Clip>; 
ObservableCollection<Clip> coll = new ObservableCollection<Clip>(Clipcol); 

我有課,在那裏我可以做這樣的事情

public class ClipStorageCollection : System.Collections.ObjectModel.ObservableCollection<Clip> 
      { 
       public ClipStorageCollection(Clip collect) 
        : base() 
       { 
        this.Add(collect); 
       } 
      } 

但我想添加到ClipStorageCollection所有所有的ObservableCollection科爾包含剪輯。 我該怎麼做?

回答

2

你可以使用的ObservableCollection接受一個IEnumerable構造。

public class ClipStorageCollection : System.Collections.ObjectModel.ObservableCollection<Clip> 
{ 
    public ClipStorageCollection(IEnumerable<Clip> clips) 
     : base(clips) 
    { 
    } 
} 

然後你可以實例化它是這樣的:

ICollection<Clip> Clipcol = new ICollection<Clip>; 
ObservableCollection<Clip> coll = new ObservableCollection<Clip>(Clipcol); 
ClipStorageCollection clipStorageCollection = new ClipStorageCollection(coll); 

如果你不希望傳遞一個IEnumerable<Clip>作爲構造函數的參數,你可以使用AddRange擴展方法(和添加一個默認的構造函數):

ICollection<Clip> Clipcol = new ICollection<Clip>; 
ObservableCollection<Clip> coll = new ObservableCollection<Clip>(Clipcol); 
ClipStorageCollection clipStorageCollection = new ClipStorageCollection(); 
clipStorageCollection.AddRange(coll); 
+0

Thnx你!它幫助到我! –

0

也許我不理解你的問題的權利,但我最初的想法是實例ClipStorageCollection,然後直接將其設置爲科爾,這樣

ClipStorageCollection myClipStorageCollection= coll; 
+0

在我嘗試以相同的方式去之前,但我收到錯誤'System.Collections.ObjectModel.ObservableCollection '到'Client.UI.Dialogs.ViewModel.ClipStorageCollection'。存在明確的轉換(你是否缺少演員?) –

0

林不知道,但有可能爲你使用迭代方法:

foreach (Clip collect in coll) 
{      
    myClipStorageCollection.add(collect); 
}