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?

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


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}".../>

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>

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>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.