Truyền giá trị enum làm tham số lệnh từ XAML


182

Tôi muốn chuyển một giá trị enum làm tham số lệnh trong WPF, sử dụng cái gì đó như thế này:

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

SearchPageType là một enum và điều này là để biết lệnh tìm kiếm nút nào được gọi.

Điều này có thể có trong WPF hay làm thế nào bạn có thể chuyển một giá trị enum làm tham số lệnh?

Câu trả lời:


285

Thử cái này

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

local- là tham chiếu không gian tên của bạn trong XAML


Nếu tôi có một enum gọi là "MyEnum" trong không gian tên này my.namespace, làm thế nào để xác định "cục bộ"?
Vering

171

Cũng nên nhớ rằng nếu enum của bạn ở trong một lớp khác, bạn cần sử dụng + toán tử.

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

46

Bạn có thể sử dụng cú pháp phần tử thuộc tính thay vì cú pháp thuộc tính cho việc này:

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

31

Ngoài ra nếu bạn muốn cung cấp [ Flags] enum, bạn có thể sử dụng cú pháp phần tử thuộc tính:

<Button>
  <Button.CommandParameter>
    <SearchPageType>First,Second</SearchPageType>
  <Button.CommandParameter>
</Button>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.