2008-12-11 15 views
160

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

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

SearchPageType es una enumeración y esto es saber de qué botón de búsqueda comando es invocado

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

Respuesta

231

Prueba este

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

local - es su namespace reference en el XAML

42

Puede utilizar la sintaxis de elementos 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> 
147

Asimismo, recuerda que si su enum está dentro de otra clase que necesita utilizar el operador +.

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

You rock !!! Me aprendiste algo, nunca antes vi el uso del operador +. ¡¡¡Muchas gracias!!! – Nicolas

+0

¡Muchas gracias! ¿De dónde sacaste el conocimiento? – Sheen

25

Además, si desea proporcionar una [Flags] ENUM puede utilizar la sintaxis de elementos de propiedad:

<Button> 
    <Button.CommandParameter> 
    <SearchPageType>First,Second</SearchPageType> 
    <Button.CommandParameter> 
</Button> 
+1

Eso es útil, nunca tuvo el requisito de hacerlo, pero es bueno saber que esto es posible. – akjoshi

+0

Esto es exactamente lo que he estado buscando; gracias. – Will

Cuestiones relacionadas