Привязка к DataGrid в асинхронно заполненную ObservableCollection выдает ошибку, указывающую, что изменения в SourceCollection не разрешены из потока, не являющегося диспетчером.
Проблема возникает из-за сходства потоков. ObservableCollection изначально создается в потоке пользовательского интерфейса, что делает его доступным только из потока пользовательского интерфейса. Чтобы изменить его из другого потока, делегат должен быть помещен в диспетчер пользовательского интерфейса.
public void Load()
{
matchList = new List();
matchList = proxy.GetMatch().ToList();
foreach (EfesBet.DataContract.GetMatchDetailsDC match in matchList)
{
App.Current.Dispatcher.Invoke((Action)delegate
{
_matchObsCollection.Add(match);
});
}
}
При вызове делегата в диспетчере пользовательского интерфейса дополнения к ObservableCollection планируются в потоке пользовательского интерфейса, разрешая исключение.
Для асинхронного режима привязку и обновление DataGrid, рассмотрите возможность использования INotifyPropertyChanged в свойствах ViewModel и вызова Dispatcher для обновления элементов пользовательского интерфейса.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3