Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a példa bemutatja, hogyan lehet enumeráláshoz kötést létrehozni. Sajnos nincs közvetlen módszer az enumerálás adatkötési forrásként való használatára. A Enum.GetValues(Type) metódus azonban értékgyűjteményt ad vissza. Ezek az értékek becsomagolhatók egy ObjectDataProvider, és adatforrásként használhatók.
A ObjectDataProvider típussal kényelmesen létrehozhat egy objektumot az XAML-ben, és adatforrásként használhatja.
Hivatkozás a felsorolásra
Használja a ObjectDataProvider típust az enumerálási típus által biztosított számbavételi értékek tömbjének körbefuttatásához. A következő lépések egy HorizontalAlignment enumerálást ölelnek fel. Igény szerint másik enumerálást is helyettesíthet.
Hozzon létre egy új
ObjectDataProvider
XAML-erőforrásként az alkalmazásban vagy annak az objektumnak az XAML-jében, amellyel dolgozik. Ez a példa egy ablakot használ arra, hogy létrehozza aObjectDataProvider
-t egyEnumDataSource
erőforráskulcsával.<Window.Resources> <ObjectDataProvider x:Key="EnumDataSource" ObjectType="{x:Type sys:Enum}" MethodName="GetValues"> <ObjectDataProvider.MethodParameters> <x:Type TypeName="HorizontalAlignment" /> </ObjectDataProvider.MethodParameters> </ObjectDataProvider> </Window.Resources>
Ebben a példában a
ObjectDataProvider
három tulajdonsággal kéri le az enumerálást:Ingatlan Leírás ObjectType
Az adatszolgáltató által visszaadandó objektum típusa. Ebben a példában System.Enum. A sys:
XAML-névtér aSystem
-hez van hozzárendelve.MethodName
A System.Enum
típuson futtatandó metódus neve. Ebben a példában Enum.GetValues.MethodParameters
A MethodName
metódus számára biztosítandó értékek gyűjteménye. Ebben a példában a metódus azSystem.Type
elemet veszi fel az enumerációból.Az XAML gyakorlatilag lebontja a metódushívást, a metódus nevét, a paramétereket és a visszatérési típust. Az előző példában konfigurált
ObjectDataProvider
az alábbi kód megfelelője:var enumDataSource = System.Enum.GetValues(typeof(System.Windows.HorizontalAlignment));
Dim enumDataSource = System.Enum.GetValues(GetType(System.Windows.HorizontalAlignment))
Hivatkozzon az
ObjectDataProvider
erőforrásra. Az alábbi XAML egy ListBox vezérlőelem enumerálási értékeit sorolja fel:<ListBox Name="myComboBox" SelectedIndex="0" ItemsSource="{Binding Source={StaticResource EnumDataSource}}"/>
Teljes XAML
A következő XAML-kód egy egyszerű ablakot jelöl, amely a következőket teszi:
- A HorizontalAlignment enumerálást egy ObjectDataProvider adatforrásba csomagolja erőforrásként.
- ListBox vezérlőelemet biztosít az összes enumerálási érték listázásához.
- Egy Button vezérlőelem HorizontalAlignment tulajdonságát a
ListBox
kijelölt eleméhez köti.
<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>
Lásd még
.NET Desktop feedback