Kawalan ComboBox WPF menyediakan pilihan pengikatan data yang fleksibel, termasuk keupayaan untuk memaparkan dan memilih nilai daripada senarai objek tersuai. Panduan ini meneroka cara untuk mengikat ComboBox ke senarai tersuai dalam WPF dan menyelesaikan masalah biasa.
Untuk mengikat ComboBox ke senarai tersuai, kelas yang mewakili struktur data senarai diperlukan. Contohnya, jika anda mempunyai senarai entri buku telefon, anda boleh menentukan kelas PhoneBookEntry yang mengandungi sifat seperti nama dan nombor.
Seterusnya, buat ConnectionViewModel yang mendedahkan koleksi objek PhoneBookEntry. Model paparan ini akan bertindak sebagai sumber data untuk ComboBox.
Dalam XAML anda, ikat sifat ItemsSource ComboBox ke sifat PhonebookEntries model lihat. Selain itu, tetapkan sifat DisplayMemberPath untuk menentukan sifat yang harus dipaparkan dalam senarai juntai bawah, dan sifat SelectedValuePath untuk menunjukkan sifat yang harus digunakan apabila memilih item untuk menetapkan sifat SelectedValue.
Secara lalai, pengikatan adalah dwiarah, membenarkan perubahan yang dibuat dalam UI atau model paparan disebarkan kepada kedua-dua pihak. Walau bagaimanapun, terdapat situasi di mana anda mungkin mahu menentukan pengikatan sehala, contohnya apabila anda hanya mahu mengemas kini model paparan apabila perubahan berlaku dalam UI.
DataContext ComboBox mestilah contoh ConnectionViewModel yang menyediakan senarai tersuai. Jika DataContext tidak ditetapkan secara eksplisit, WPF akan cuba membuat kesimpulan berdasarkan elemen sekeliling dan hierarki yang mengikat.
Apabila item ditambahkan pada ComboBox melalui ItemsControl atau ItemsPanel, item tersebut mewarisi DataContext elemen induk secara lalai. Ini bermakna DataContext setiap item dalam ComboBox dalam ItemsControl adalah sama dengan DataContext of ItemsControl itu sendiri.
Jika sifat PhonebookEntries pada ConnectionViewModel ialah CollectionView, anda mungkin menghadapi isu pengikatan dua hala. Untuk menyelesaikan isu ini, pertimbangkan untuk menukar jenis sifat kepada ReadOnlyCollection atau melaksanakan kelas terbitan ICollectionView tersuai.
Dalam sesetengah kes, anda mungkin lebih suka menggunakan kaedah ToString() kelas tersuai dan bukannya DisplayMemberPath. Ini membolehkan kawalan yang lebih besar ke atas teks yang dipaparkan dalam senarai juntai bawah, sambil masih menggunakan sifat SelectedValue untuk menyimpan nilai yang dipilih.
Atas ialah kandungan terperinci Bagaimana untuk Mengikat ComboBox WPF ke Senarai Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!