2013-06-06 23 views
13

Ich habe ein CollectionChanged-Ereignis, das an eine ObservableCollection gebunden ist. Dieses CollectionChanged-Ereignis ruft dann eine andere Funktion auf, die eine andere Auflistung desselben Typs mit einem Element aus der ursprünglichen Auflistung aktualisieren soll. Ich habe andere Beiträge auf der "kann ObservableCollection während eines CollectionChanged-Ereignisses nicht ändern" und ich verstehe vollständig, warum es verpönt ist, eine Sammlung innerhalb eines CollectionChanged Ereignis zu ändern und warum dies in einem Zirkelverweis führen kann ... aber in In diesem speziellen Fall modifiziere ich nicht die ursprüngliche Sammlung, ich füge nur ein Element daraus zu einer nicht verwandten Sammlung hinzu.ObservableCollection kann während eines CollectionChanged-Ereignisses nicht geändert werden.

So zu meiner Frage .. ist etwas falsch mit dem, was ich tue? Ich sehe nicht, wie das Hinzufügen eines Elements aus der Sammlung mit dem Ereignis, das mit einer anderen Sammlung verknüpft ist, das Ereignis erneut auslöst und einen Zirkelverweis erstellt (obwohl Sie mir bitte sagen, ob ich falsch liege).

Auch ... gibt es einen Weg um es herum? Ich habe mehrere Beiträge gelesen, die darauf hinweisen, dass dies in einem separaten Thread ausgeführt wird, aber wenn ich versuche, bekomme ich stattdessen den folgenden Fehler.

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

Ich bin wirklich nur nach einem besseren Verständnis, was hier vor sich geht. Jeder Rat würde sehr geschätzt werden.

bearbeiten

Vereinfachtes Beispiel als

angefordert
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

Welchen Fehler bekommen Sie? – SLaks

+0

Der Titel des Beitrags ist die Fehlermeldung .. Kann ObservableCollection während eines CollectionChanged-Ereignisses nicht ändern – aw04

+0

Konnten Sie den tatsächlichen Code veröffentlichen? –

Antwort

Verwandte Themen