Cara mengikat enumerasi (WPF .NET)
Contoh ini menunjukkan cara mengikat enumerasi. Sayangnya tidak ada cara langsung untuk menggunakan enumerasi sebagai sumber pengikatan data. Namun, metode mengembalikan Enum.GetValues(Type) kumpulan nilai. Nilai-nilai ini dapat dibungkus dalam ObjectDataProvider dan digunakan sebagai sumber data.
Jenis ini ObjectDataProvider menyediakan cara mudah untuk membuat objek di XAML dan menggunakannya sebagai sumber data.
Mereferensikan enumerasi
ObjectDataProvider Gunakan jenis untuk membungkus array nilai enumerasi yang disediakan oleh jenis enumerasi itu sendiri.
Buat baru
ObjectDataProvider
sebagai sumber daya XAML, baik di aplikasi Anda XAML atau XAML objek yang sedang Anda kerjakan. Contoh ini menggunakan jendela dan membuatObjectDataProvider
dengan kunci sumber daya .EnumDataSource
<Window.Resources> <ObjectDataProvider x:Key="EnumDataSource" ObjectType="{x:Type sys:Enum}" MethodName="GetValues"> <ObjectDataProvider.MethodParameters> <x:Type TypeName="HorizontalAlignment" /> </ObjectDataProvider.MethodParameters> </ObjectDataProvider> </Window.Resources>
Dalam contoh ini,
ObjectDataProvider
menggunakan tiga properti untuk mengambil enumerasi:Properti Deskripsi ObjectType
Jenis objek yang akan dikembalikan oleh penyedia data. Pada contoh ini, System.Enum. Namespace sys:
XAML dipetakan keSystem
.MethodName
Nama metode yang akan dijalankan pada System.Enum
jenis . Pada contoh ini, Enum.GetValues.MethodParameters
Kumpulan nilai yang akan diberikan ke MethodName
metode . Dalam contoh ini, metode mengambilSystem.Type
enumerasi.Secara efektif, XAML memecah panggilan metode, nama metode, parameter, dan jenis pengembalian. Yang
ObjectDataProvider
dikonfigurasi dalam contoh sebelumnya setara dengan kode berikut:var enumDataSource = System.Enum.GetValues(typeof(System.Windows.HorizontalAlignment));
Dim enumDataSource = System.Enum.GetValues(GetType(System.Windows.HorizontalAlignment))
Referensikan
ObjectDataProvider
sumber daya. XAML berikut mencantumkan nilai enumerasi dalam ListBox kontrol:<ListBox Name="myComboBox" SelectedIndex="0" ItemsSource="{Binding Source={StaticResource EnumDataSource}}"/>
XAML Penuh
Kode XAML berikut mewakili jendela sederhana yang melakukan hal berikut:
- Membungkus HorizontalAlignment enumerasi dalam ObjectDataProvider sumber data sebagai sumber daya.
- Menyediakan kontrol untuk mencantumkan ListBox semua nilai enumerasi.
- Mengikat Button properti kontrol HorizontalAlignment ke item yang dipilih di
ListBox
.
<Window x:Class="ArticleExample.BindEnumFull"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
SizeToContent="WidthAndHeight"
Title="Enum binding">
<Window.Resources>
<ObjectDataProvider x:Key="EnumDataSource"
ObjectType="{x:Type sys:Enum}"
MethodName="GetValues">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="HorizontalAlignment" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
<StackPanel Width="300" Margin="10">
<TextBlock>Choose the HorizontalAlignment value of the Button:</TextBlock>
<ListBox Name="myComboBox" SelectedIndex="0"
ItemsSource="{Binding Source={StaticResource EnumDataSource}}"/>
<Button Content="I'm a button"
HorizontalAlignment="{Binding ElementName=myComboBox, Path=SelectedItem}" />
</StackPanel>
</Window>
Lihat juga
.NET Desktop feedback