2013-02-25 51 views
0

基本上,我想知道如果我能做到這一點有兩個ObservableCollections:如何將一個ObservableCollection設置爲另一個ObservableCollection?

oldList = newList; 

我有獲取填充throughtout我的應用程序兩個列表,並在每次得到填充時間,我希望「新」值成爲'舊'價值觀,然後獲得一套新的價值觀放入'新'列表。

是不是很簡單?任何其他方式來做到這一點,而不是每次迭代整個newList?

編輯:這是如何填充新的列表。基本上,我只是想將newList的內容放入oldList中。

   foreach (object obj in ts.GetVariables()) 
      { 
       if ((obj.ToString() != "_SMSTSReserved2") || (obj.ToString() != "OSDJoinPassword") || (obj.ToString() != "OSDLocalAdminPassword")) 
       { 
        TSVar var = new TSVar(); 
        var.TSVarName = obj.ToString(); 
        var.TSVarValue = ts[obj.ToString()]; 
        newList.Add(var); 
       } 
      } 
      oldList.Clear(); 
      foreach (TSVar var in newList) 
      { 
       oldList.Add(var); 
      } 
+1

你可以展示他們如何填充新值的代碼? – tsells 2013-02-25 19:00:22

+0

你看過CollectionChanged事件嗎? – 2013-02-25 19:01:10

回答

2

如果使用下面列出的擴展方法,你正在嘗試做成爲一個內膽:

**oldList.Replace(newList);** 

我想創建一個擴展方法的ObservableCollection這樣:

public static class ObservableCollectionEntensionMethods 
    { 
     public static void Relace<T>(this ObservableCollection<T> old, ObservableCollection<T> @new) 
     { 
      old.Clear(); 
      foreach (var item in @new) 
      { 
       old.Add(item); 
      } 
     } 
    } 

這就是你將如何使用它:

using System.Collections.ObjectModel; 
using System.Linq; 
using Microsoft.VisualStudio.TestTools.UnitTesting; 

namespace ExtensionMethods 
{ 
    [TestClass] 
    public class ObservableCollectionEntensionMethodsTest 
    { 
     [TestMethod] 
     public void ReplaceTest() 
     { 
      // Arrange 
      var old = new ObservableCollection<string> { "1"}; 
      var @new = new ObservableCollection<string> {"2"}; 

      // Act 
      old.Relace(@new); 

      // Assert 
      Assert.AreEqual("2", old.First()); 
     } 
    } 
} 
0

我認爲這是您可能正在尋找的?這會將newList中的所有內容添加到您的oldList中。

ObservableCollection<YourType> oldList = new ObservableCollection<YourType>(newList); 
newList.clear(); 
//put new stuff in your list here. 
+0

有了這個解決方案,確保你爲OldList實現了某種改變(比如INotifyPropertyChanged)通知(我假設你正在使用WPF),否則你仍然會被綁定到(現在不再被引用[在這個對象中] ObservableCollection)。 – Aron 2013-02-25 20:37:27

相關問題