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.