Un enlace de DataGrid a una ObservableCollection completa de forma asincrónica genera un error que indica que no se permiten cambios en SourceCollection desde un subproceso que no sea Dispatcher.
El problema surge de la afinidad del subproceso. ObservableCollection se crea inicialmente en el hilo de la interfaz de usuario, por lo que solo se puede acceder a ella desde el hilo de la interfaz de usuario. Para modificarlo desde un hilo diferente, el delegado debe colocarse en UI Dispatcher.
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);
});
}
}
Al invocar al delegado en UI Dispatcher, las adiciones a ObservableCollection se programan en el subproceso de UI, resolviendo la excepción.
Para asincrónicos vinculación y actualización de DataGrid, considere usar INotifyPropertyChanged en sus propiedades de ViewModel e invocar Dispatcher para actualizar los elementos de la interfaz de usuario.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3