Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengikat ComboBox WPF dengan betul ke Senarai Tersuai dan Menyelesaikan Isu Konteks Data?

Bagaimana untuk Mengikat ComboBox WPF dengan betul ke Senarai Tersuai dan Menyelesaikan Isu Konteks Data?

Linda Hamilton
Linda Hamiltonasal
2025-01-23 23:57:11519semak imbas

How to Correctly Bind a WPF ComboBox to a Custom List and Resolve DataContext Issues?

WPF ComboBox Binding dengan Senarai Tersuai: Memahami Hierarki Pengikatan

Dalam pengikatan data WPF, elemen anak dalam DataTemplate mewarisi DataContext elemen induknya. Ini bermakna ComboBox di dalam DataTemplate akan secara automatik menetapkan DataContext kepada objek ViewModel asas yang diwakili oleh DataTemplate.

Isu pengikatan data

Dalam contoh kod yang disediakan, ComboBox tidak mengemas kini pengikatan SelectedItem/SelectedValue kerana DataContext tidak ditetapkan dengan betul. Masalah ini boleh diselesaikan dengan menetapkan DataContext secara eksplisit dalam fail belakang kod MainWindow.

<code class="language-csharp">public partial class Window1
{
    public Window1()
    {
        InitializeComponent();
        DataContext = new MainWindowViewModel();
    }
}</code>

Konfigurasi pengikatan yang betul

Selepas menetapkan DataContext, konfigurasi mengikat ComboBox sepatutnya kelihatan seperti ini:

<code class="language-xml"><ComboBox ItemsSource="{Binding Path=PhonebookEntries}"
          DisplayMemberPath="Name"
          SelectedValuePath="Name"
          SelectedValue="{Binding Path=PhonebookEntry}" /></code>
  • ItemSource: Menentukan koleksi item untuk dipaparkan dalam ComboBox.
  • DisplayMemberPath: Menentukan sifat setiap item untuk dipaparkan dalam senarai.
  • SelectedValuePath: Menentukan sifat setiap item untuk digunakan sebagai nilai.
  • SelectedValue: Menentukan sifat ViewModel yang mewakili item yang dipilih.

Pengubahsuaian: Isu pengikatan data menggunakan CollectionView

Jika menggunakan sifat CollectionView untuk PhonebookEntries, adalah disyorkan untuk menggunakan kelas terbitan. Ini kerana menggunakan CollectionView secara langsung membawa kepada ketidakcekapan dan kemungkinan ralat. Dengan menggunakan kelas terbitan, anda boleh melaksanakan fungsi lanjutan sambil mengelakkan isu yang diketahui.

Gunakan ToString() dalam kandungan senarai lungsur turun

Untuk mengelakkan isu pengikatan yang berpotensi, anda boleh menggunakan ToString() dan bukannya DisplayMemberPath untuk memaparkan kandungan lungsur turun. ToString() mewakili perwakilan rentetan setiap item, dan DisplayMemberPath menentukan ahli yang digunakan untuk memilih dan memaparkan item tersebut.

<code class="language-xml"><ComboBox ItemsSource="{Binding Path=PhonebookEntries}"
          SelectedValuePath="Name"
          SelectedValue="{Binding Path=PhonebookEntry}" /></code>

Atas ialah kandungan terperinci Bagaimana untuk Mengikat ComboBox WPF dengan betul ke Senarai Tersuai dan Menyelesaikan Isu Konteks Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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