Tôi cóLàm thế nào để sao chép bộ sưu tập quan sát
Observablecollection<A> aRef = new Observablecollection<A>();
bRef = aRef();
Trong trường hợp này cả hai điểm đến cùng ObservableCollection
... Làm thế nào để tạo một bản sao khác nhau?
Tôi cóLàm thế nào để sao chép bộ sưu tập quan sát
Observablecollection<A> aRef = new Observablecollection<A>();
bRef = aRef();
Trong trường hợp này cả hai điểm đến cùng ObservableCollection
... Làm thế nào để tạo một bản sao khác nhau?
Làm điều này:
// aRef being an Observablecollection
Observablecollection<Entity> bRef = new Observablecollection<Entity>(aRef);
này sẽ tạo ra một bộ sưu tập quan sát được nhưng các mục vẫn đang trỏ đến mục gốc. Nếu bạn cần các mục để trỏ một bản sao thay vì các mục gốc, bạn cần phải thực hiện và sau đó gọi một phương pháp nhân bản.
CẬP NHẬT
Nếu bạn cố gắng thêm vào một danh sách và sau đó là bộ sưu tập quan sát được có danh sách ban đầu, chỉ cần tạo ObservableCollection bằng cách thông qua danh sách ban đầu:
List<Entity> originalEnityList = GetThatOriginalEnityListFromSomewhere();
Observablecollection<Entity> bRef = new Observablecollection<Entity>(originalEnityList);
Bạn có thể thực hiện ICloneable
trong định nghĩa thực thể của bạn và sau đó tạo một bản sao của ObservableCollection
với dàn diễn viên bên trong. Kết quả là bạn sẽ có một nhân bản vô tính List
mà không có bất kỳ tham chiếu đến các mục cũ. Sau đó, bạn có thể tạo mới ObservableCollection
bạn whit nhân bản List
public class YourEntity : ICloneable {
public AnyType Property { get; set; }
....
public object Clone()
{
return MemberwiseClone();
}
}
Việc thực hiện sẽ là
var clonedList = originalObservableCollection.Select(objEntity => (YourEntity) objEntity.Clone()).ToList();
ObservableCollection<YourEntity> clonedCollection = new ObservableCollection<YourEntity>(clonedList);
Cảm ơn ... Nhưng vấn đề thực sự của tôi là tôi có một bộ sưu tập quan sát ... khi tôi thêm một mới mục cho nó .. nó không được phản ánh trong giao diện người dùng. Vì vậy, những gì tôi đang làm bây giờ là sao chép toàn bộ bộ sưu tập vào một bộ sưu tập tính khí ... sau đó thêm mục mới vào bộ sưu tập temp. Sau đó gán lại bộ sưu tập temp. – Relativity
Tôi đã cập nhật. – Aliostad
Nhưng tôi có bộ sưu tập quan sát làm đầu vào. Tức là .... Tôi có một bộ sưu tập quan sát của 120 mặt hàng .. Tôi thêm mục mới vào nó ... bây giờ nó có 121 mặt hàng ... Sau đó giao diện người dùng sẽ hiển thị 121 mặt hàng – Relativity