Как иметь значение перечисления в CommandParam в XAML
-
29-09-2019 - |
Вопрос
У меня есть следующее перечисление, которое представляет состояние пользовательского интерфейса (я использую его для включения и отключения элементов пользовательского интерфейса):
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>