我有一个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 –