Melewati nilai enum sebagai parameter perintah dari XAML

182

Saya ingin memberikan nilai enum sebagai parameter perintah di WPF, menggunakan sesuatu seperti ini:

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

SearchPageType adalah enum dan ini untuk mengetahui dari mana perintah pencarian tombol dipanggil.

Apakah ini mungkin di WPF, atau bagaimana Anda bisa memberikan nilai enum sebagai parameter perintah?

akjoshi
sumber

Jawaban:

286

Coba ini

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

local- adalah referensi namespace Anda di XAML

Jobi Joy
sumber
Jika saya memiliki enum yang disebut "MyEnum" di namespace my.namespace ini, bagaimana cara mendefinisikan "lokal"?
Vering
172

Juga ingat bahwa jika enum Anda berada di dalam kelas lain, Anda perlu menggunakan +operator.

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

Anda bisa menggunakan sintaks elemen properti alih-alih sintaks atribut untuk ini:

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

Juga jika Anda ingin memberikan Flagsenum [ ] Anda dapat menggunakan sintaks elemen properti:

<Button>
  <Button.CommandParameter>
    <SearchPageType>First,Second</SearchPageType>
  <Button.CommandParameter>
</Button>
hartmape
sumber