Ich habe eine ObservableCollection an ein DataGrid gebunden. Ich möchte die Sammlung in einer anderen Klasse aktualisieren, die eine asynchrone Funktion ausführt. Derzeit, wenn ich versuche, es normal hinzuzufügen, erhalte ich den Fehler: This type of CollectionView does not support changes to its SourceCollection from a thread different from the Dispatcher thread
. Lesen andere Fragen viele vorschlagen BindingOperations.EnableCollectionSynchronization
, aber ich habe keine Ahnung, wie Sie es implementieren, und ich kann keine Beispiele finden, die es aus einer anderen Klasse ausführen. Ist dies der richtige Weg, die Sammlung zu aktualisieren, da sie sehr häufig aktualisiert werden würden, oder gibt es einen besseren Weg?ObservableCollection von einer anderen Klasse aktualisieren
Wie für den Code, Hauptklasse:
public DataStore dataStore = new DataStore();
public MainWindow() {
InitializeComponent();
requestView.ItemsSource = dataStore.requestData;
responseView.ItemsSource = dataStore.responseData;
DataRetriver drt = new DataRetriver(dataStore);
}
und die Klasse, die retrives Daten:
public class DataRetriver
{
DataStore localStore;
public BidAskDataRetriver(DataStore ds)
{
this.localStore = ds;
runA();
}
public void runA()
{
//Build listener
listener.Bind("data", (dynamic data) => {
//data = json
parseData(data);
});
}
parseData(dynamic data)
{
//parse data and make a list with items for collection
foreach(myClass item in items)
localStore.requestData.Add(item);
}
}
Zeigen Sie minimalen relevanten Code. –
@HamletHakobyan Ich habe Code hinzugefügt, hoffe, es ist relevant genug. – Hauba
Dispatcher.Invoke –