Maison >développement back-end >C++ >Comment lier des valeurs Enum à un contrôle WPF ComboBox ?

Comment lier des valeurs Enum à un contrôle WPF ComboBox ?

DDD
DDDoriginal
2025-01-05 21:50:41637parcourir

How to Bind Enum Values to a WPF ComboBox Control?

Liaison d'énumérations aux contrôles WPF ComboBox : une approche simple

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.

Solution 1 : Liaison à partir du code

Pour afficher les valeurs d'énumération directement dans la ComboBox à partir du code, les étapes suivantes peut être pris :

  1. Dans le gestionnaire d'événements Loaded de la fenêtre, insérez ce qui suit code :
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.

Solution 2 : liaison dans XAML

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn