akjoshi
akjoshi

Reputation: 15772

Passing an enum value as command parameter from XAML

I want to pass an enum value as command parameter in WPF, using something like this:

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

SearchPageType is an enum and this is to know from which button search command is invoked.

Is this possible in WPF, or how can you pass an enum value as command parameter?

Upvotes: 212

Views: 76027

Answers (5)

Mhd Sheikh
Mhd Sheikh

Reputation: 30

Try thisenter image description here

CommandParameter="{x:Static "Class namespace e.g(Models)":SearchPageType.First}"

Upvotes: -2

hartmape
hartmape

Reputation: 553

Also if you want to provide a [Flags] enum you can use the property element syntax:

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

Upvotes: 33

tbergelt
tbergelt

Reputation: 2246

Also remember that if your enum is inside another class you need to use the + operator.

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

Upvotes: 191

Jobi Joy
Jobi Joy

Reputation: 50038

Try this

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

local - is your namespace reference in the XAML

Upvotes: 337

Robert Macnee
Robert Macnee

Reputation: 11820

You can use property element syntax instead of attribute syntax for this:

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

Upvotes: 54

Related Questions