Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento příklad ukazuje, jak vytvořit vazbu na výčet. Bohužel neexistuje přímý způsob použití výčtu jako zdroje datových vazeb. Metoda Enum.GetValues(Type) však vrátí kolekci hodnot. Tyto hodnoty lze zabalit do ObjectDataProvider a použít jako zdroj dat.
Typ ObjectDataProvider poskytuje pohodlný způsob, jak vytvořit objekt v XAML a použít ho jako zdroj dat.
Odkaz na výčet
Pomocí typu ObjectDataProvider zabalte pole hodnot výčtu zadaných samotným typem výčtu. Následující kroky uzavřou HorizontalAlignment výčet. V případě potřeby můžete nahradit jiný výčet.
Vytvořte nový
ObjectDataProviderjako prostředek XAML, buď v XAML vaší aplikace, nebo v XAML objektu, se kterým pracujete. Tento příklad používá okno a vytvoří objektObjectDataProviderpomocí klíče prostředkuEnumDataSource.<Window.Resources> <ObjectDataProvider x:Key="EnumDataSource" ObjectType="{x:Type sys:Enum}" MethodName="GetValues"> <ObjectDataProvider.MethodParameters> <x:Type TypeName="HorizontalAlignment" /> </ObjectDataProvider.MethodParameters> </ObjectDataProvider> </Window.Resources>V tomto příkladu
ObjectDataProviderpoužívá k načtení výčtu tři vlastnosti:Vlastnictví Popis ObjectTypeTyp objektu, který má být vrácen poskytovatelem dat. V tomto příkladu System.Enum. Obor názvů sys:XAML je mapován naSystem.MethodNameNázev metody, která se má spustit pro typ System.Enum. V tomto příkladu Enum.GetValues.MethodParametersKolekce hodnot, které se mají poskytnout MethodNamemetodě. V tomto příkladu metoda přebíráSystem.Typevýčtu.XAML efektivně rozděluje volání metody, název metody, parametry a návratový typ.
ObjectDataProvidernakonfigurovaná v předchozím příkladu je ekvivalentem následujícího kódu:var enumDataSource = System.Enum.GetValues(typeof(System.Windows.HorizontalAlignment));Dim enumDataSource = System.Enum.GetValues(GetType(System.Windows.HorizontalAlignment))Odkaz na zdroj
ObjectDataProvider. Následující kód XAML uvádí hodnoty výčtu v ovládacím prvku ListBox:<ListBox Name="myComboBox" SelectedIndex="0" ItemsSource="{Binding Source={StaticResource EnumDataSource}}"/>
Úplný KÓD XAML
Následující kód XAML představuje jednoduché okno, které provede následující kroky:
- Zabalí výčet HorizontalAlignment ve zdroji dat ObjectDataProvider jako zdroj.
- Poskytuje ovládací prvek ListBox pro výpis všech hodnot výčtu.
- Spojuje vlastnost Button ovládacího prvku HorizontalAlignment s vybranou položkou v
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>
Viz také
- Přehled datových vazeb
- Přehled zdrojů vazby
- rozšíření značek StaticResource
- Alternativní způsob navázání na výčet
.NET Desktop feedback