Pasar un valor de enumeración como parámetro de comando desde XAML

182

Quiero pasar un valor de enumeración como parámetro de comando en WPF, usando algo como esto:

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

SearchPageType es una enumeración y esto es para saber desde qué botón se invoca el comando de búsqueda.

¿Es esto posible en WPF o cómo puede pasar un valor de enumeración como parámetro de comando?

akjoshi
fuente

Respuestas:

286

Prueba esto

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

local- es su referencia de espacio de nombres en XAML

Jobi Joy
fuente
Si tengo una enumeración llamada "MyEnum" en este espacio de nombres my.namespace, ¿cómo definir "local"?
Vering
172

También recuerde que si su enumeración está dentro de otra clase, debe usar el +operador.

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

Puede usar la sintaxis del elemento de propiedad en lugar de la sintaxis de atributo para esto:

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

Además, si desea proporcionar una Flagsenumeración [ ], puede usar la sintaxis del elemento de propiedad:

<Button>
  <Button.CommandParameter>
    <SearchPageType>First,Second</SearchPageType>
  <Button.CommandParameter>
</Button>
Hartmape
fuente