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
Lepaskan: 2025-01-23 23:57:11
asal
517 orang telah melayarinya

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

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

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!

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