Maklumkan ObservableCollection tentang Perubahan Item
Cabaran:
ObservableCollection tidak mengesan perubahan item secara automatik , walaupun dengan INotifyPropertyChanged dilaksanakan. Ini boleh menghalang UI daripada mengemas kini apabila sifat item berubah.
Penyelesaian:
Untuk mengatasinya, pertimbangkan pendekatan berikut:
TrulyObservableCollection
Kelas TrulyObservableCollection dalam contoh berkesan mengaitkan pada acara PropertyChanged bagi setiap item dalam koleksi. Walau bagaimanapun, ia menimbulkan acara Reset CollectionChanged untuk setiap perubahan hartanah, yang boleh menjadi tidak cekap.
PropertyChanged Event Handling
Sebagai alternatif, seseorang boleh menggunakan ObservableCollection biasa dan mendaftarkan Pengendali acara PropertyChanged untuk setiap item selepas CollectionChanged. Ini membantu menyasarkan perubahan item tertentu dan mengelakkan peristiwa CollectionChanged yang tidak perlu.
Pelaksanaan:
Dalam kelas MyViewModel anda, sambungkan acara CollectionChanged MyItemsSource kepada pengendali MyItemsSource_CollectionChanged. Dalam pengendali ini:
Apabila MyProperty item berubah, pengendali MyType_PropertyChanged digunakan. Pengendali ini menyemak sama ada nama harta itu ialah "MyProperty" dan mencetuskan tindakan yang perlu jika benar. Pendekatan ini lebih cekap dan menyediakan cara yang jelas untuk mengenal pasti perubahan item.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memaklumkan dengan Cekap Koleksi Boleh Diperhatikan Perubahan Harta Item?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!