Lorsque vous travaillez avec WPF (Windows Présentation Framework), il est courant de rencontrer le besoin de lier des données à un Contrôle ComboBox. Dans les cas où les données sont représentées sous forme d'énumération, afficher les valeurs d'énumération directement dans les éléments ComboBox peut être simple.
Considérez le scénario suivant : vous disposez d'une classe qui encapsule diverses propriétés et vous souhaitez lier votre ComboBox à l’une de ces propriétés, qui est représentée sous forme d’énumération. Définir DataContext sur l’instance de classe et utiliser une syntaxe de liaison dans le fichier XAML est une approche typique. Cependant, cette approche peut ne pas entraîner l'apparition des valeurs d'énumération sous forme d'éléments dans la ComboBox.
Pour afficher les valeurs d'énumération directement dans la ComboBox à partir du code, les étapes suivantes peut être pris :
yourComboBox.ItemsSource = Enum.GetValues(typeof(EffectStyle)).Cast<EffectStyle>();
Cette ligne récupère les valeurs d'énumération, les convertit dans le type correct et les affecte à la propriété ItemsSource de la ComboBox.
Alternativement, la liaison peut être établie en XAML à l'aide d'un ObjectDataProvider :
<Window> <Window.Resources> <ObjectDataProvider x:Key="dataFromEnum" MethodName="GetValues" ObjectType="{x:Type System:Enum}"> <ObjectDataProvider.MethodParameters> <x:Type TypeName="Motion.VideoEffects:EffectStyle"/> </ObjectDataProvider.MethodParameters> </ObjectDataProvider> </Window.Resources> <Grid> <ComboBox ItemsSource="{Binding Source={StaticResource dataFromEnum}}" SelectedItem="{Binding Path=CurrentEffectStyle}" /> </Grid> </Window>
Ce code XAML définit un ObjectDataProvider au sein des ressources de la fenêtre. La propriété MethodName est définie sur GetValues, qui récupère les valeurs d'énumération. La propriété ObjectType spécifie le type de l'énumération et la propriété MethodParameters fournit le type de l'énumération pour laquelle le fournisseur de données doit récupérer les valeurs.
Il est important de noter que dans le code XAML, l'espace de noms et l'assembly du type enum doit être fourni :
xmlns:System="clr-namespace:System;assembly=mscorlib" xmlns:StyleAlias="clr-namespace:Motion.VideoEffects"
En utilisant ces approches, il devient possible de lier des valeurs enum aux contrôles WPF ComboBox, offrant un moyen simple d'afficher énumérations dans une liste déroulante.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!