Passer une valeur d'énumération en tant que paramètre de commande à partir de XAML

182

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

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

SearchPageType est une énumération et c'est pour savoir à partir de quelle commande de recherche de bouton est invoquée.

Est-ce possible dans WPF, ou comment pouvez-vous passer une valeur d'énumération en tant que paramètre de commande?

akjoshi
la source

Réponses:

286

Essaye ça

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

local- est votre référence d'espace de noms dans le XAML

Joie Jobi
la source
Si j'ai une énumération appelée "MyEnum" dans cet espace de noms my.namespace, comment définir "local"?
Vering
172

Souvenez-vous également que si votre énumération se trouve dans une autre classe, vous devez utiliser l' +opérateur.

<Button CommandParameter="{x:Static local:MyOuterType+SearchPageType.First}".../>
Tbergelt
la source
47

Vous pouvez utiliser la syntaxe d'élément de propriété au lieu de la syntaxe d'attribut pour cela:

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

De plus, si vous souhaitez fournir une Flagsénumération [ ], vous pouvez utiliser la syntaxe d'élément de propriété:

<Button>
  <Button.CommandParameter>
    <SearchPageType>First,Second</SearchPageType>
  <Button.CommandParameter>
</Button>
hartmape
la source