DataGrid 바인딩 비동기적으로 채워진 ObservableCollection에 대한 오류는 Dispatcher가 아닌 스레드에서는 SourceCollection에 대한 변경이 허용되지 않는다는 오류를 발생시킵니다.
문제는 스레드 선호도에서 발생합니다. ObservableCollection은 처음에 UI 스레드에서 생성되므로 UI 스레드에서만 액세스할 수 있습니다. 다른 스레드에서 이를 수정하려면 대리자를 UI Dispatcher에 배치해야 합니다.
<code class="csharp">public void Load() { matchList = new List<GetMatchDetailsDC>(); matchList = proxy.GetMatch().ToList(); foreach (EfesBet.DataContract.GetMatchDetailsDC match in matchList) { App.Current.Dispatcher.Invoke((Action)delegate { _matchObsCollection.Add(match); }); } }</code>
UI Dispatcher에서 대리자를 호출하면 ObservableCollection에 추가됩니다. UI 스레드에서 예약되어 예외를 해결합니다.
DataGrid의 비동기 바인딩 및 새로 고침을 위해서는 ViewModel 속성에서 INotifyPropertyChanged를 사용하고 Dispatcher를 호출하여 UI 요소.
위 내용은 WPF의 비디스패처 스레드에서 ObservableCollection을 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!