2008-12-11 10 views
160

Je veux passer une valeur ENUM en tant que paramètre de commande dans WPF, en utilisant quelque chose comme ceci:Passant une valeur ENUM en tant que paramètre de commande de XAML

<Button 
    x:Name="uxSearchButton" 
    Command="{Binding Path=SearchMembersCommand}" 
    CommandParameter="SearchPageType.First" 
    Content="Search"> 
</Button> 

SearchPageType est un ENUM et c'est de savoir à partir de quel bouton recherche commande est invoquée. Est-ce possible dans WPF, ou comment passer une valeur enum comme paramètre de commande?

Répondre

231

Essayez cette

<Button CommandParameter="{x:Static local:SearchPageType.First}" .../> 

local - est votre namespace reference dans le XAML

42

Vous pouvez utiliser la syntaxe des éléments de propriété au lieu de la syntaxe d'attribut pour ceci:

<Button x:Name="uxSearchButton" 
     Command="{Binding Path=SearchMembersCommand}" 
     Content="Search"> 
    <Button.CommandParameter> 
     <SearchPageType>First</SearchPageType> 
    </Button.CommandParameter> 
</Button> 
147

Rappelez-vous aussi que si votre Enum se trouve dans une autre classe dont vous avez besoin pour utiliser l'opérateur +.

<Button CommandParameter="{x:Static local:MyOuterType+SearchPageType.First}".../> 
+11

You rock !!! Vous m'avez appris quelque chose, je n'ai jamais vu l'utilisation de l'opérateur + auparavant. Merci beaucoup!!! – Nicolas

+0

Merci beaucoup! Où diable avez-vous eu cette connaissance? – Sheen

25

Aussi, si vous voulez fournir un [Flags] ENUM vous pouvez utiliser la syntaxe d'élément de propriété:

<Button> 
    <Button.CommandParameter> 
    <SearchPageType>First,Second</SearchPageType> 
    <Button.CommandParameter> 
</Button> 
+1

C'est utile, je n'ai jamais eu besoin de le faire, mais bon de savoir que c'est possible. – akjoshi

+0

C'est exactement pour ce que j'ai cherché; Je vous remercie. – Will