2010-11-14 25 views

Trả lời

16

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); 
+0

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

+0

Tôi đã cập nhật. – Aliostad

+0

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

5

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ác vấn đề liên quan