Rumah >pembangunan bahagian belakang >C++ >Mengapa WPF ComboBox Saya Tidak Kemas Kini Item Terpilih/Nilai Terpilih Apabila Terikat pada Senarai Tersuai?
WPF ComboBox dan Senarai Tersuai: Mengikat Cabaran dan Penyelesaian
Mengikat WPF ComboBox ke senarai tersuai melibatkan penggunaan DisplayMemberPath
dan SelectedValuePath
untuk mengawal cara data dipaparkan dan dipilih. Walau bagaimanapun, masalah biasa ialah kegagalan SelectedItem
/SelectedValue
untuk mengemas kini dengan betul. Ini selalunya berpunca daripada set DataContext
yang tidak betul.
Masalah Konteks Data
DataContext
menentukan sifat objek yang digunakan untuk mengikat data dalam elemen tertentu. Terlupa untuk menetapkannya dengan betul untuk ComboBox anda adalah punca isu yang mengikat.
Penyelesaian: Menetapkan Konteks Data
Untuk membetulkannya, pastikan DataContext
ComboBox menghala ke objek yang mengandungi harta yang anda ikat (SelectedValue
atau SelectedItem
). Contoh:
<code class="language-xml"><ComboBox DataContext="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}}" DisplayMemberPath="Name" ItemsSource="{Binding Path=PhonebookEntries}" SelectedValue="{Binding Path=PhonebookEntry}" SelectedValuePath="Name"> </ComboBox></code>
Ini mengikat ComboBox kepada Window
's DataContext
(biasanya ViewModel anda), memastikan akses kepada sifat ViewModel.
Pertimbangan Penting:
DisplayMemberPath
dan SelectedValuePath
(dalam kes ini, "Nama").CollectionView
secara langsung boleh menyebabkan masalah mengikat. Kelas terbitan disyorkan. Had ini tiada dalam .NET 4.6 dan lebih baru.Pengikatan Berjaya: Ringkasan
Dengan menetapkan DataContext
dengan betul, menggunakan nilai DisplayMemberPath
dan SelectedValuePath
yang sesuai serta mengesahkan sifat senarai tersuai anda, anda boleh mengikat WPF ComboBox pada data tersuai anda dengan pasti.
Atas ialah kandungan terperinci Mengapa WPF ComboBox Saya Tidak Kemas Kini Item Terpilih/Nilai Terpilih Apabila Terikat pada Senarai Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!