【发布时间】:2016-08-01 12:39:09
【问题描述】:
我有一个绑定到 DataGrid 的 ObservableCollection。我想更新另一个运行异步函数的类中的集合。目前,当我尝试正常添加它时,我收到错误:This type of CollectionView does not support changes to its SourceCollection from a thread different from the Dispatcher thread。阅读其他问题,许多人建议使用BindingOperations.EnableCollectionSynchronization,但我不知道如何实现它,也找不到任何从另一个类运行它的示例。这是更新集合的正确方法,因为它们会非常频繁地更新,还是有更好的方法?
至于代码,主类:
public DataStore dataStore = new DataStore();
public MainWindow() {
InitializeComponent();
requestView.ItemsSource = dataStore.requestData;
responseView.ItemsSource = dataStore.responseData;
DataRetriver drt = new DataRetriver(dataStore);
}
以及检索数据的类:
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 我添加了一些代码,希望它足够相关。