Vytvoření vazby k výčtu (WPF .NET)
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. Enum.GetValues(Type) Metoda však vrátí kolekci hodnot. Tyto hodnoty lze zabalit do ObjectDataProvider zdroje dat a použít je jako zdroj dat.
Tento ObjectDataProvider typ poskytuje pohodlný způsob, jak vytvořit objekt v XAML a použít ho jako zdroj dat.
Důležité
Dokumentace k desktopové příručce pro .NET 7 a .NET 6 se právě připravuje.
Odkazování na výčet
ObjectDataProvider Tento typ slouží k zabalení pole hodnot výčtu zadaných samotným typem výčtu.
Vytvořte nový
ObjectDataProvider
jako prostředek XAML, a to buď v aplikaci XAML, nebo XAML objektu, se kterým pracujete. Tento příklad používá okno a vytvoříObjectDataProvider
s klíčemEnumDataSource
prostředku .<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
ObjectDataProvider
používá tři vlastnosti k načtení výčtu:Vlastnost Popis ObjectType
Typ objektu, který má být vrácen poskytovatelem dat. V tomto příkladu . System.Enum Obor sys:
názvů XAML je namapován naSystem
.MethodName
Název metody, která se má spustit na System.Enum
typu. V tomto příkladu . Enum.GetValuesMethodParameters
Kolekce hodnot, které se mají metodě poskytnout MethodName
. V tomto příkladu metoda přebíráSystem.Type
výčet.XAML efektivně rozděluje volání metody, název metody, parametry a návratový typ. Nakonfigurovaná
ObjectDataProvider
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
ObjectDataProvider
prostředek. Následující XAML uvádí hodnoty výčtu v ovládacím ListBox prvku:<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í HorizontalAlignment výčet do ObjectDataProvider zdroje dat jako prostředek.
- ListBox Poskytuje ovládací prvek pro výpis všech hodnot výčtu.
- Button Vytvoří vazbu vlastnosti ovládacího prvku HorizontalAlignment na vybranou položku v objektu
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é
.NET Desktop feedback
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro