2013-06-06 13 views
13

Mam zdarzenie CollectionChanged powiązane z ObservableCollection. To zdarzenie CollectionChanged wywołuje następnie inną funkcję, która ma aktualizować inną kolekcję (tego samego typu) z elementem z oryginalnej kolekcji. Czytałem inne posty w "Nie można zmienić ObservableCollection podczas zdarzenia CollectionChanged" i rozumiem całkowicie, dlaczego jest on niezadowolony z modyfikowania kolekcji wewnątrz zdarzenia CollectionChanged i dlaczego może to skutkować odwołaniem cyklicznym ... ale w w tym konkretnym przypadku nie modyfikuję oryginalnej kolekcji, tylko dodam do niej element do niepowiązanej kolekcji.Nie można zmienić obiektu ObservableCollection podczas zdarzenia CollectionChanged

Więc na moje pytanie .. czy coś jest nie tak z tym co robię? Nie rozumiem, w jaki sposób dodanie elementu z kolekcji związanej z wydarzeniem powiązanym z inną kolekcją spowoduje ponowne uruchomienie zdarzenia i utworzenie odwołania cyklicznego (chociaż proszę, powiedz mi, jeśli się mylę).

Również ... czy jest jakiś sposób obejścia tego? Przeczytałem kilka postów zalecających uruchomienie tego w oddzielnym wątku, ale gdy próbuję, otrzymuję następujący błąd.

This type of CollectionView does not support changes to its SourceCollection 
from a thread different from the Dispatcher thread. 

Po prostu lepiej rozumiem, co tu się dzieje. Każda rada byłaby mile widziana.

Edit

uproszczony przykład zgodnie z wnioskiem

void originalCollection_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) 
{ 
    update(originalCollection); 
} 

private void update(object parameter) 
{ 
    foreach (var originalCollectionItem in parameter) 
     newCollection.Add(originalCollectionItem); 
} 
+0

Jakiego błędu dostałeś? – SLaks

+0

Tytuł postu jest komunikatem o błędzie .. Nie można zmienić ObservableCollection podczas zdarzenia CollectionChanged – aw04

+0

Czy mógłbyś opublikować aktualny kod? –

Odpowiedz

Powiązane problemy