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?

Respuestas:


286

Prueba esto

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

local- es su referencia de espacio de nombres en XAML


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

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>

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>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.