Как получить значение перечисления в CommandParam в XAML

У меня есть следующее перечисление, которое представляет состояние пользовательского интерфейса (я использую его для включения и отключения элементов пользовательского интерфейса):

enum Mode 
{
 EDIT, RUN, REVIEW
}

Я хочу передать Mode.EDIT команде в CommandParam:

  <Button Grid.Column="6" VerticalAlignment="Top Command="{Binding Path=ChangeMode}" 
CommandParameter="{StaticResource local:Mode.RUN}" />

Но я понятия не имею, как это заявить. Как вы видите в объявлении кнопки, я пытаюсь использовать StaticResource, но это не удается. Я новичок в SL4 и C #, поэтому я полагаю, что что-то упустил.


person Skarab    schedule 18.08.2010    source источник


Ответы (3)


Я нашел решение. Я создал в своем MyViewModel (my DataContext) 3 общедоступных атрибута (типа Mode) и инициализирую их в конструкторе (значениями EDIT, RUN , ОБЗОР). Затем я связал их в XAML как обычное свойство DataContext:

CommandParameter="{Binding Path=EDIT}

class MyViewModel
{  
  public Mode EDIT {set; get;}
  public Mode RUN {set; get;}
  public Mode REVIEW {set; get;}

  MyViewModel()
 { 
   EDIT = Mode.EDIT;
    ...
 }
} 
person Skarab    schedule 19.08.2010

В WPF мы можем сделать что-то вроде этого (может не работать в SL) -

<Button Grid.Column="6" Command="{Binding Path=ChangeMode}"
CommandParameter="{x:Static local:Mode.RUN}" />

проверьте этот вопрос для получения дополнительных сведений - Передача значения перечисления в качестве параметра команды из XAML

person akjoshi    schedule 11.01.2012

в silverlight x: Static не работает, поэтому мы можем сделать что-то вроде этого:

<Button Command="{Binding Path=ChangeMode}">
    <Button.CommandParameter>
        <Mode>RUN</Mode>
    </Button.CommandParameter>
</Button>
person darson1991    schedule 21.12.2015