如何在XAML中的CommandParam中使用枚举值

时间:2010-08-18 14:14:28

标签: xaml silverlight-4.0 enums command commandparameter

我有以下枚举表示UI的状态(我使用它来启用和禁用UI元素):

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#都很陌生,所以我想我错过了一些东西。

2 个答案:

答案 0 :(得分:3)

我找到了解决方案。我在我的MyViewModel(我的 DataContext )3个公共属性(类型为Mode)中创建并在构造函数中初始化它们(值为 EDIT RUN REVIEW )。接下来,我将它们绑定在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 :(得分:3)

在WPF中,我们可以做这样的事情(可能在SL中不起作用) -

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

查看此问题了解更多详情 - Passing an enum value as command parameter from XAML