Przekazywanie wartości wyliczeniowej jako parametru polecenia z XAML

182

Chcę przekazać wartość wyliczenia jako parametr polecenia w WPF, używając czegoś takiego:

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

SearchPageType jest wyliczeniem i ma to na celu określenie, z którego polecenia polecenia wyszukiwania jest wywoływane.

Czy jest to możliwe w WPF lub jak przekazać wartość wyliczoną jako parametr polecenia?

akjoshi
źródło

Odpowiedzi:

285

Spróbuj tego

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

local- to odniesienie do przestrzeni nazw w XAML

Jobi Joy
źródło
Jeśli mam wyliczenie o nazwie „MyEnum” w tej przestrzeni nazw my.namespace, jak zdefiniować „lokalny”?
Vering
171

Pamiętaj również, że jeśli twój enum należy do innej klasy, musisz użyć +operatora.

<Button CommandParameter="{x:Static local:MyOuterType+SearchPageType.First}".../>
Tbergelt
źródło
46

W tym celu można użyć składni elementu właściwości zamiast składni atrybutu:

<Button x:Name="uxSearchButton"
        Command="{Binding Path=SearchMembersCommand}"
        Content="Search">
    <Button.CommandParameter>
        <SearchPageType>First</SearchPageType>
    </Button.CommandParameter>
</Button>
Robert Macnee
źródło
31

Również jeśli chcesz podać Flagswyliczenie [ ], możesz użyć składni elementu właściwości:

<Button>
  <Button.CommandParameter>
    <SearchPageType>First,Second</SearchPageType>
  <Button.CommandParameter>
</Button>
Hartmape
źródło