Passando un valore enum come parametro di comando da XAML


182

Voglio passare un valore enum come parametro di comando in WPF, usando qualcosa del genere:

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

SearchPageType è un enum e questo è per sapere da quale pulsante viene cercato il comando di ricerca.

È possibile in WPF o come si può passare un valore enum come parametro di comando?

Risposte:


286

Prova questo

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

local- è il riferimento al tuo spazio dei nomi in XAML


Se ho un enum chiamato "MyEnum" in questo spazio dei nomi my.namespace, come definire "locale"?
— Vering

172

Ricorda inoltre che se il tuo enum è all'interno di un'altra classe devi usare l' +operatore.

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

47

È possibile utilizzare la sintassi dell'elemento proprietà anziché la sintassi dell'attributo per questo:

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

31

Inoltre, se si desidera fornire un Flagsenum [ ], è possibile utilizzare la sintassi dell'elemento proprietà:

<Button>
  <Button.CommandParameter>
    <SearchPageType>First,Second</SearchPageType>
  <Button.CommandParameter>
</Button>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.