我有以下代表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}" />

但是我不知道如何宣布它。正如您在按钮声明中看到的那样,我尝试使用 静电 但是它失败了。我是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中:静态不起作用,因此我们可以这样做:

<Button Command="{Binding Path=ChangeMode}">
    <Button.CommandParameter>
        <Mode>RUN</Mode>
    </Button.CommandParameter>
</Button>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top