我有一個ObservableCollection綁定到DataGrid。我想更新另一個運行異步函數的類中的集合。目前,當我嘗試添加它時,通常會收到錯誤:This type of CollectionView does not support changes to its SourceCollection from a thread different from the Dispatcher thread
。閱讀許多人建議使用BindingOperations.EnableCollectionSynchronization
的其他問題,但我不知道如何實現它,我找不到任何從另一個類運行它的例子。這是更新集合的正確方法,因爲它們會更新得非常頻繁,或者有更好的方法嗎?從另一個類更新ObservableCollection
至於代碼,主要類:
public DataStore dataStore = new DataStore();
public MainWindow() {
InitializeComponent();
requestView.ItemsSource = dataStore.requestData;
responseView.ItemsSource = dataStore.responseData;
DataRetriver drt = new DataRetriver(dataStore);
}
這retrives數據的類:
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);
}
}
顯示最小的相關代碼。 –
@HamletHakobyan我加了一些代碼,希望它的相關性夠了。 – Hauba
Dispatcher.Invoke –