Observablecollection<A> aRef = new Observablecollection<A>();
bRef = aRef();
在這種情況下,都指向同一個ObservableCollection
...我如何做出不同的副本?
Observablecollection<A> aRef = new Observablecollection<A>();
bRef = aRef();
在這種情況下,都指向同一個ObservableCollection
...我如何做出不同的副本?
這樣做:
// aRef being an Observablecollection
Observablecollection<Entity> bRef = new Observablecollection<Entity>(aRef);
這將創建一個可觀察的集合,但項目仍然會指向原來的項目。如果您需要項目指向克隆而不是原始項目,則需要實施並調用克隆方法。
UPDATE
如果您嘗試添加到列表中,然後觀察集合有原來的列表中,只是通過將原始列表創建的ObservableCollection:
List<Entity> originalEnityList = GetThatOriginalEnityListFromSomewhere();
Observablecollection<Entity> bRef = new Observablecollection<Entity>(originalEnityList);
您可以實現ICloneable
接口在你的實體定義中,然後製作ObservableCollection
的內部演員副本。因此,您將有一個克隆List
沒有任何引用舊的項目。然後,你可以創建新ObservableCollection
白衣克隆List
public class YourEntity : ICloneable {
public AnyType Property { get; set; }
....
public object Clone()
{
return MemberwiseClone();
}
}
的實施將
var clonedList = originalObservableCollection.Select(objEntity => (YourEntity) objEntity.Clone()).ToList();
ObservableCollection<YourEntity> clonedCollection = new ObservableCollection<YourEntity>(clonedList);
謝謝...但我真正的問題是,我有一個觀察的集合......當我添加一個新的項目它..它不反映在用戶界面。所以我現在正在做的是將整個集合複製到temperory集合中......然後將新項目添加到temp集合中。然後分配回溫度回收。 – Relativity 2010-11-14 20:53:28
我已更新。 – Aliostad 2010-11-14 20:57:42
但我有可觀察的收集作爲輸入。即....我有一個可觀察的120件物品的集合..我增加了新的物品..它現在有121個物品...然後用戶界面應該顯示121個物品 – Relativity 2010-11-14 21:01:31