Rel*_*ity 18 wpf copy observablecollection
我有
Observablecollection<A> aRef = new Observablecollection<A>();
bRef = aRef();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,两者都指向相同ObservableCollection...如何制作不同的副本?
Ali*_*tad 24
做这个:
// aRef being an Observablecollection
Observablecollection<Entity> bRef = new Observablecollection<Entity>(aRef);
Run Code Online (Sandbox Code Playgroud)
这将创建一个可观察的集合,但项目仍指向原始项目.如果需要项目指向克隆而不是原始项目,则需要实现然后调用克隆方法.
UPDATE
如果您尝试添加到列表,然后observable集合具有原始列表,只需通过传递原始列表来创建Observablecollection:
List<Entity> originalEnityList = GetThatOriginalEnityListFromSomewhere();
Observablecollection<Entity> bRef = new Observablecollection<Entity>(originalEnityList);
Run Code Online (Sandbox Code Playgroud)
Jai*_*rín 11
您可以ICloneable在实体定义中实现接口,然后ObservableCollection使用内部强制转换复制该接口.因此,您将获得克隆List而不引用旧项目.然后你可以创建ObservableCollection克隆的新whit List
public class YourEntity : ICloneable {
public AnyType Property { get; set; }
....
public object Clone()
{
return MemberwiseClone();
}
}
Run Code Online (Sandbox Code Playgroud)
实施将是
var clonedList = originalObservableCollection.Select(objEntity => (YourEntity) objEntity.Clone()).ToList();
ObservableCollection<YourEntity> clonedCollection = new ObservableCollection<YourEntity>(clonedList);
Run Code Online (Sandbox Code Playgroud)