Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengikat Enum ke Kawalan ComboBox WPF?

Bagaimana untuk Mengikat Enum ke Kawalan ComboBox WPF?

Linda Hamilton
Linda Hamiltonasal
2025-01-05 19:16:41706semak imbas

How to Bind Enums to WPF ComboBox Controls?

Mengikat Enum pada Kawalan ComboBox WPF

Apabila cuba memaparkan nilai enum sebagai item dalam ComboBox, mengikat terus daripada Konteks Data mungkin tidak mencukupi. Untuk menangani perkara ini, kami mengemukakan dua pendekatan untuk menyelesaikan isu ini: melalui pengikatan kod dan XAML.

Pengikatan Berasaskan Kod

Dalam pengendali acara yang Dimuatkan Tetingkap, laksanakan kod berikut:

yourComboBox.ItemsSource = Enum.GetValues(typeof(EffectStyle)).Cast<EffectStyle>();

Ini mendapatkan semula nilai enum dan menetapkannya sebagai item ComboBox sumber.

XAML Binding

Untuk pengikatan XAML, gunakan ObjectDataProvider:

<ComboBox ItemsSource="{Binding Source={StaticResource dataFromEnum}}"
                  SelectedItem="{Binding Path=CurrentEffectStyle}" />

Dalam bahagian Sumber Tetingkap, tentukan ObjectDataProvider:

<ObjectDataProvider x:Key="dataFromEnum" MethodName="GetValues"
                            ObjectType="{x:Type System:Enum}">
            <ObjectDataProvider.MethodParameters>
                <x:Type TypeName="StyleAlias:EffectStyle"/>
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>

Ingat untuk mengisytiharkan yang perlu ruang nama:

xmlns:System="clr-namespace:System;assembly=mscorlib"
xmlns:StyleAlias="clr-namespace:Motion.VideoEffects"

Kaedah ini menyediakan cara yang mudah dan berkesan untuk mengikat enum pada kawalan ComboBox dalam WPF.

Atas ialah kandungan terperinci Bagaimana untuk Mengikat Enum ke Kawalan ComboBox WPF?. 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