DataGrid 바인딩 비동기적으로 채워진 ObservableCollection에 대한 오류는 Dispatcher가 아닌 스레드에서 SourceCollection에 대한 변경이 허용되지 않는다는 오류를 발생시킵니다.
문제는 스레드 선호도에서 발생합니다. ObservableCollection은 처음에 UI 스레드에서 생성되므로 UI 스레드에서만 액세스할 수 있습니다. 다른 스레드에서 수정하려면 위임을 UI 디스패처에 배치해야 합니다.
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);
});
}
}
UI Dispatcher에서 대리자를 호출하면 ObservableCollection에 대한 추가가 UI 스레드에서 예약되어 예외가 해결됩니다.
비동기의 경우 DataGrid 바인딩 및 새로 고침을 수행하려면 ViewModel 속성에서 INotifyPropertyChanged를 사용하고 Dispatcher를 호출하여 UI 요소를 새로 고치는 것이 좋습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3