Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengikat Nilai Enum ke Kawalan ComboBox WPF?
Apabila bekerja dengan WPF (Windows Presentation Framework), adalah perkara biasa untuk menghadapi keperluan untuk mengikat data kepada Kawalan ComboBox. Dalam kes di mana data diwakili sebagai enum, memaparkan nilai enum secara langsung dalam item ComboBox boleh menjadi mudah.
Pertimbangkan senario berikut: anda mempunyai kelas yang merangkum pelbagai sifat dan anda ingin mengikat ComboBox anda kepada salah satu sifat ini, yang diwakili sebagai enum. Menetapkan DataContext kepada contoh kelas dan menggunakan sintaks yang mengikat dalam fail XAML ialah pendekatan biasa. Walau bagaimanapun, pendekatan ini mungkin tidak menyebabkan nilai enum muncul sebagai item dalam ComboBox.
Untuk memaparkan nilai enum terus dalam ComboBox daripada kod, langkah berikut boleh diambil:
yourComboBox.ItemsSource = Enum.GetValues(typeof(EffectStyle)).Cast<EffectStyle>();
Baris ini mendapatkan semula nilai enum, menukarkannya kepada jenis yang betul dan memberikannya kepada sifat ItemsSource bagi ComboBox.
Sebagai alternatif, pengikatan boleh diwujudkan dalam XAML menggunakan ObjectDataProvider:
<Window> <Window.Resources> <ObjectDataProvider x:Key="dataFromEnum" MethodName="GetValues" ObjectType="{x:Type System:Enum}"> <ObjectDataProvider.MethodParameters> <x:Type TypeName="Motion.VideoEffects:EffectStyle"/> </ObjectDataProvider.MethodParameters> </ObjectDataProvider> </Window.Resources> <Grid> <ComboBox ItemsSource="{Binding Source={StaticResource dataFromEnum}}" SelectedItem="{Binding Path=CurrentEffectStyle}" /> </Grid> </Window>
Kod XAML ini mentakrifkan ObjectDataProvider dalam sumber tetingkap. Sifat MethodName ditetapkan kepada GetValues, yang mendapatkan semula nilai enum. Sifat ObjectType menentukan jenis enum dan sifat MethodParameters menyediakan jenis enum yang penyedia data harus mendapatkan nilainya.
Adalah penting untuk ambil perhatian bahawa dalam kod XAML, ruang nama dan pemasangan daripada jenis enum mesti disediakan:
xmlns:System="clr-namespace:System;assembly=mscorlib" xmlns:StyleAlias="clr-namespace:Motion.VideoEffects"
Dengan menggunakan pendekatan ini, ia menjadi mungkin untuk mengikat nilai enum kepada WPF ComboBox mengawal, menyediakan cara yang mudah untuk memaparkan enum dalam senarai lungsur turun.
Atas ialah kandungan terperinci Bagaimana untuk Mengikat Nilai Enum ke Kawalan ComboBox WPF?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!