Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här exemplet visar hur du binder till en uppräkning. Tyvärr finns det inte ett direkt sätt att använda en uppräkning som en databindningskälla. Metoden Enum.GetValues(Type) returnerar dock en samling värden. Dessa värden kan omslutas i en ObjectDataProvider och användas som en datakälla.
Den ObjectDataProvider typen är ett bekvämt sätt att skapa ett objekt i XAML och använda det som datakälla.
Hänvisa till uppräkningen
Använd ObjectDataProvider-typen för att omsluta en matris med uppräkningsvärden som tillhandahålls av uppräkningstypen. Följande steg omsluter en HorizontalAlignment uppräkning. Du kan ersätta en annan uppräkning om du vill.
Skapa en ny
ObjectDataProvidersom en XAML-resurs, antingen i ditt program XAML eller XAML för objektet du arbetar med. Det här exemplet använder ett fönster och skaparObjectDataProvidermed en resursnyckel förEnumDataSource.<Window.Resources> <ObjectDataProvider x:Key="EnumDataSource" ObjectType="{x:Type sys:Enum}" MethodName="GetValues"> <ObjectDataProvider.MethodParameters> <x:Type TypeName="HorizontalAlignment" /> </ObjectDataProvider.MethodParameters> </ObjectDataProvider> </Window.Resources>I det här exemplet använder
ObjectDataProvidertre egenskaper för att hämta uppräkningen:Fastighet Beskrivning ObjectTypeDen typ av objekt som ska returneras av dataprovidern. I det här exemplet . System.Enum XAML-namnområdet sys:mappas tillSystem.MethodNameNamnet på den metod som ska köras på den System.Enumtypen. I det här exemplet . Enum.GetValuesMethodParametersEn samling värden som ska anges för metoden MethodName. I det här exemplet tar metoden uppräkningensSystem.Type.I praktiken delar XAML upp ett metodanrop, metodnamn, parametrar och returtyp. Den
ObjectDataProvidersom konfigurerades i föregående exempel motsvarar följande kod:var enumDataSource = System.Enum.GetValues(typeof(System.Windows.HorizontalAlignment));Dim enumDataSource = System.Enum.GetValues(GetType(System.Windows.HorizontalAlignment))Referera till resursen
ObjectDataProvider. Följande XAML visar uppräkningsvärdena i en ListBox kontroll:<ListBox Name="myComboBox" SelectedIndex="0" ItemsSource="{Binding Source={StaticResource EnumDataSource}}"/>
Fullständig XAML
Följande XAML-kod representerar ett enkelt fönster som gör följande:
- Omsluter uppräkningen HorizontalAlignment som en resurs i en datakälla ObjectDataProvider.
 - Ger en ListBox kontroll för att visa alla uppräkningsvärden.
 - Binder en Button kontrolls egenskap HorizontalAlignment till det markerade objektet i 
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>
Se även
- Översikt över databindning
 - Översikt över bindningskällor
 - StaticResource Markup-tillägg
 - Ett alternativt sätt att binda till en uppräkning
 
.NET Desktop feedback