Passando um valor de enumeração como parâmetro de comando do XAML

182

Eu quero passar um valor enum como parâmetro de comando no WPF, usando algo como isto:

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

SearchPageType é uma enumeração e é para saber a partir de qual comando de pesquisa de botão é chamado.

Isso é possível no WPF, ou como você pode passar um valor de enumeração como parâmetro de comando?

akjoshi
fonte

Respostas:

286

Tente isto

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

local- é sua referência de espaço para nome no XAML

Jobi Joy
fonte
Se eu tenho uma enumeração chamada "MyEnum" neste namespace my.namespace, como definir "local"?
Vering
172

Lembre-se também de que, se sua enumeração estiver dentro de outra classe, você precisará usar o +operador.

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

Você pode usar a sintaxe do elemento de propriedade em vez da sintaxe de atributo para isso:

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

Além disso, se você deseja fornecer uma Flagsenumeração [ ], pode usar a sintaxe do elemento de propriedade:

<Button>
  <Button.CommandParameter>
    <SearchPageType>First,Second</SearchPageType>
  <Button.CommandParameter>
</Button>
hartmape
fonte