Как получить значение перечисления в CommandParam в XAML - PullRequest
2 голосов
/ 18 августа 2010

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

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 #, так что я полагаю, что что-то пропустил.

Ответы [ 3 ]

3 голосов
/ 11 января 2012

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

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

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

3 голосов
/ 19 августа 2010

Я нашел решение.Я создал в моих MyViewModel (мой 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;
    ...
 }
} 
1 голос
/ 21 декабря 2015

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

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