Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questo esempio viene illustrato come eseguire l'associazione a un'enumerazione . Sfortunatamente non esiste un modo diretto per usare un'enumerazione come origine di data binding. Tuttavia, il metodo Enum.GetValues(Type) restituisce una raccolta di valori. Questi valori possono essere racchiusi in un ObjectDataProvider e usati come origine dati.
Il tipo ObjectDataProvider offre un modo pratico per creare un oggetto in XAML e usarlo come origine dati.
Fare riferimento all'enumerazione
Utilizzare il tipo ObjectDataProvider per incapsulare un array di valori di enumerazione forniti dal tipo di enumerazione stessa. La procedura seguente avvolge un'enumerazione HorizontalAlignment. Se necessario, è possibile sostituire un'enumerazione diversa.
Crea una nuova
ObjectDataProvidercome risorsa XAML, nel codice XAML dell'applicazione o nel codice XAML dell'oggetto con cui stai lavorando. Questo esempio usa una finestra e crea ilObjectDataProvidercon una chiave di risorsa diEnumDataSource.<Window.Resources> <ObjectDataProvider x:Key="EnumDataSource" ObjectType="{x:Type sys:Enum}" MethodName="GetValues"> <ObjectDataProvider.MethodParameters> <x:Type TypeName="HorizontalAlignment" /> </ObjectDataProvider.MethodParameters> </ObjectDataProvider> </Window.Resources>In questo esempio, il
ObjectDataProviderusa tre proprietà per recuperare l'enumerazione :Proprietà Descrizione ObjectTypeTipo di oggetto da restituire dal provider di dati. In questo esempio, System.Enum. Lo spazio dei nomi XAML sys:viene mappato aSystem.MethodNameNome del metodo da eseguire sul tipo System.Enum. In questo esempio, Enum.GetValues.MethodParametersRaccolta di valori da fornire al metodo MethodName. In questo esempio il metodo accetta ilSystem.Typedell'enumerazione .In effetti, il codice XAML suddivide una chiamata al metodo, il nome del metodo, i parametri e il tipo restituito. Il
ObjectDataProviderconfigurato nell'esempio precedente è l'equivalente del codice seguente:var enumDataSource = System.Enum.GetValues(typeof(System.Windows.HorizontalAlignment));Dim enumDataSource = System.Enum.GetValues(GetType(System.Windows.HorizontalAlignment))Fare riferimento alla risorsa
ObjectDataProvider. Il codice XAML seguente elenca i valori di enumerazione in un controllo ListBox:<ListBox Name="myComboBox" SelectedIndex="0" ItemsSource="{Binding Source={StaticResource EnumDataSource}}"/>
XAML completo
Il codice XAML seguente rappresenta una finestra semplice che esegue le operazioni seguenti:
- Incapsula l'enumerazione HorizontalAlignment in una fonte di dati ObjectDataProvider come risorsa.
- Fornisce un controllo ListBox per elencare tutti i valori di enumerazione.
- Associa la proprietà Button di un controllo HorizontalAlignment all'elemento selezionato nel
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>
Vedere anche
- Panoramica dell'associazione dati
- Panoramica delle origini di binding
- dell'estensione di markup StaticResource
- Un modo alternativo per eseguire l'associazione a un'enumerazione
.NET Desktop feedback