2010-11-14 19 views

Odpowiedz

16

Wykonaj:

// aRef being an Observablecollection 
Observablecollection<Entity> bRef = new Observablecollection<Entity>(aRef); 

To stworzy zaobserwowania kolekcji ale elementy są wciąż wskazując na oryginalnych przedmiotów. Jeśli potrzebujesz przedmiotów do wskazania klonu zamiast oryginalnych elementów, musisz zaimplementować, a następnie wywołać metodę klonowania.

UPDATE

Jeśli spróbujesz dodać do listy, a następnie gromadzenie obserwowalne mieć oryginalne listy, wystarczy utworzyć ObservableCollection przekazując oryginalną listę:

List<Entity> originalEnityList = GetThatOriginalEnityListFromSomewhere(); 
Observablecollection<Entity> bRef = new Observablecollection<Entity>(originalEnityList); 
+0

Dzięki ... Ale moim prawdziwym problemem jest to, mam do zaobserwowania kolekcji ... kiedy dodać nowy element do niego ... to nie jest odbijane w interfejsie użytkownika. Więc to, co teraz robię, to skopiuj całą kolekcję do kolekcji temperowanej ... a następnie dodaj nowy element do kolekcji tymczasowej. Następnie przywróć z powrotem kolekcję temp. – Relativity

+0

Zaktualizowałem. – Aliostad

+0

Ale mam kolekcję obserwowalną jako dane wejściowe. Tj .... Mam widoczną kolekcję 120 przedmiotów .. Dodaję do niej nowy element .. ma 121 elementów ... Następnie powinien wyświetlać 121 elementów. – Relativity

5

Można wdrożyć ICloneable interfejs w definicji jednostki, a następnie wykonaj kopię modelu ObservableCollection za pomocą odlewu wewnętrznego. W rezultacie będziesz mieć sklonowany List bez odniesienia do starych przedmiotów. Następnie można utworzyć nowy ObservableCollection odrobina sklonowany List

public class YourEntity : ICloneable { 
    public AnyType Property { get; set; } 
    .... 
    public object Clone() 
    { 
     return MemberwiseClone(); 
    } 
} 

Realizacja byłoby

var clonedList = originalObservableCollection.Select(objEntity => (YourEntity) objEntity.Clone()).ToList(); 

ObservableCollection<YourEntity> clonedCollection = new ObservableCollection<YourEntity>(clonedList); 
Powiązane problemy