DataGrid terikat kepada ObservableCollection yang dihuni secara tidak segerak melemparkan ralat yang menyatakan bahawa perubahan pada SourceCollection tidak dibenarkan daripada urutan bukan Penghantar.
Masalah timbul daripada pertalian benang. ObservableCollection pada mulanya dibuat pada utas UI, menjadikannya hanya boleh diakses daripada utas UI. Untuk mengubah suainya daripada urutan lain, perwakilan mesti diletakkan pada Penghantar UI.
<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>
Dengan memanggil perwakilan pada Penghantar UI, penambahan pada ObservableCollection dijadualkan pada urutan UI, menyelesaikan pengecualian.
Untuk pengikatan dan penyegaran tak segerak DataGrid, pertimbangkan untuk menggunakan INotifyPropertyChanged pada sifat ViewModel anda dan menggunakan Dispatcher untuk memuat semula Elemen UI.
Atas ialah kandungan terperinci Bagaimana untuk mengubah suai ObservableCollection Daripada Benang Bukan Penghantar dalam WPF?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!