Передача значения перечисления в качестве параметра команды из XAML

182

Я хочу передать значение перечисления в качестве параметра команды в WPF, используя что-то вроде этого:

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

SearchPageType является перечислением, и это должно знать, из какой кнопки вызывается команда поиска.

Возможно ли это в WPF или как передать значение перечисления в качестве параметра команды?

akjoshi
источник

Ответы:

286

Попробуй это

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

local- ваша ссылка на пространство имен в XAML

Джоби Джой
источник
Если у меня есть enum с именем «MyEnum» в этом пространстве имен my.namespace, как определить «local»?
Веринг
172

Также помните, что если ваше перечисление находится внутри другого класса, вам нужно использовать +оператор.

<Button CommandParameter="{x:Static local:MyOuterType+SearchPageType.First}".../>
tbergelt
источник
47

Для этого вы можете использовать синтаксис элемента свойства вместо синтаксиса атрибута:

<Button x:Name="uxSearchButton"
        Command="{Binding Path=SearchMembersCommand}"
        Content="Search">
    <Button.CommandParameter>
        <SearchPageType>First</SearchPageType>
    </Button.CommandParameter>
</Button>
Роберт Макни
источник
31

Также, если вы хотите предоставить Flagsперечисление [ ], вы можете использовать синтаксис элемента свойства:

<Button>
  <Button.CommandParameter>
    <SearchPageType>First,Second</SearchPageType>
  <Button.CommandParameter>
</Button>
hartmape
источник