Convertisseur pour afficher la description d'un enum, et de convertir de retour à la valeur d'enum sur la sélection d'un élément de zone de liste déroulante dans wpf
Je suis en utilisant un enum pour inscrire les valeurs dans ma zone de liste déroulante.
Je veux écrire un convertisseur qui va montrer la "description" de la sélection de la valeur d'enum. Et, lorsqu'il est sélectionné, il serait de retour la valeur d'enum.
La plupart des convertisseurs en ligne n'ont pas mis en œuvre les ConvertBack (), méthode (c'est pourquoi je suis de poster ici).
Merci d'avance.
Pour certains vraiment sympa solutions, voir stackoverflow.com/questions/58743/....
OriginalL'auteur aromore | 2013-11-29
Vous devez vous connecter pour publier un commentaire.
Ici est ConvertBack méthode:
Complet Convertisseur De Code:
MODIFIER
Voici mon ComboBox XAML:
EDIT 2:
J'ai d'abord eu une mauvaise XAML, j'ai été liaison
SelectedValue
àComboBox.SelectedIndex
, au lieu deComboBox.SelectedItem
. C'est pourquoi j'ai dû utiliserEnum.ToObject
dans monConvertBack
méthode. Après la fixation de la XAML et de l'exécution de l'échantillon à travers le débogueur j'ai réalisé que je pouvais juste retourvalue
deConvertBack
méthode, à cause de la valeur elle-même est deEnum
type.<ComboBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Converter = {StaticResource EnumDescriptionConverter}}"></TextBlock> </DataTemplate> </ComboBox.ItemTemplate>
ajouté XAML pour la zone de liste déroulante à partir de mon exemple.
ohh..j'ai juste besoin de passer par le convertisseur... merci!
Mise à jour de réponse, veuillez vérifier les mises à jour
ConvertBack
memthod.OriginalL'auteur sthotakura
Je sais que c'est une vieille question, mais pour quelque raison, c'est plutôt compliqué, même s'il semble que ce serait une jolie commune de la tâche (je suis en train de le faire sur une UWP app). En utilisant une combinaison de la accepté de répondre à quelques autres articles que j'ai trouvé, et un peu de mon propre travail, voici le moyen le plus simple que j'ai trouvé pour accomplir cette tâche ingrate. En bref:
Enum
Convertisseur
Viewmodel (partielle)
Extensions
XAML (partielle)
OriginalL'auteur Joe
La méthode d'extension dans l'exemple pourrait ressembler à ceci:
OriginalL'auteur Mike Perrenoud
Supplément pour les exemples ci-dessus pour afficher la décoration de la enum avec des attributs.
BTW, je me demande pourquoi vous avez besoin de convertir le dos de la description de l'enum. Si vous fournissez les énumérations comme ItemSource, vous pouvez utiliser la description technique pour montrer la valeur d'affichage dans la zone de liste déroulante, cependant, une fois qu'un élément est sélectionné, vous pouvez directement avoir un enum comme élément sélectionné.
OriginalL'auteur VijayKP
Voici mon travail bien exemple:
Enum définition:
De la classe Helper:
XAML:
OriginalL'auteur Marc