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);
}
Jakiego błędu dostałeś? – SLaks
Tytuł postu jest komunikatem o błędzie .. Nie można zmienić ObservableCollection podczas zdarzenia CollectionChanged – aw04
Czy mógłbyś opublikować aktualny kod? –