Bagaimana untuk mengubah suai ObservableCollection Daripada Benang Bukan Penghantar dalam WPF?

Linda Hamilton
Lepaskan: 2024-10-31 20:06:01
asal
870 orang telah melayarinya

How to Modify an ObservableCollection From a Non-Dispatcher Thread in WPF?

"Jenis CollectionView Ini Tidak Menyokong Perubahan kepada Koleksi Sumbernya daripada Benang Berbeza daripada Benang Penghantar"

Penerangan Masalah

DataGrid terikat kepada ObservableCollection yang dihuni secara tidak segerak melemparkan ralat yang menyatakan bahawa perubahan pada SourceCollection tidak dibenarkan daripada urutan bukan Penghantar.

Penyelesaian

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.

Kod ViewModel yang Dikemas kini

<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>
Salin selepas log masuk

Dengan memanggil perwakilan pada Penghantar UI, penambahan pada ObservableCollection dijadualkan pada urutan UI, menyelesaikan pengecualian.

Pengikatan dan Penyegaran Dipertingkatkan

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!