Вопрос

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

enum Mode 
{
 EDIT, RUN, REVIEW
}

Я хотел бы перенести mode.edit в команду в CommandParam:

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

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

Это было полезно?

Решение

Я нашел решение. Я создал в своем MyViewModel (мой DataContext) 3 Общественные атрибуты (режима типа) и инициализируйте их в конструкторе (со значениями РЕДАКТИРОВАТЬ, БЕЖАТЬ, РАССМОТРЕНИЕ). Далее я связал их в 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;
    ...
 }
} 

Другие советы

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

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

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

В Silverlight X: Static не работает, поэтому мы можем делать это так:

<Button Command="{Binding Path=ChangeMode}">
    <Button.CommandParameter>
        <Mode>RUN</Mode>
    </Button.CommandParameter>
</Button>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top