2016-03-01 46 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); 
}