2

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

4

3 回答 3

3

我找到了解决方案。我在我的MyViewModel(我的DataContext)中创建了 3 个公共属性(类型为 Mode )并在构造函数中初始化它们(使用值EDITRUNREVIEW)。接下来,我在 XAML 中将它们绑定为 a 的普通属性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;
    ...
 }
} 
于 2010-08-19T12:52:04.993 回答
3

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

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

检查此问题以获取更多详细信息- 从 XAML 传递枚举值作为命令参数

于 2012-01-11T05:49:12.857 回答
1

在 silverlight x:Static 中不起作用,所以我们可以这样做:

<Button Command="{Binding Path=ChangeMode}">
    <Button.CommandParameter>
        <Mode>RUN</Mode>
    </Button.CommandParameter>
</Button>
于 2015-12-21T09:57:08.473 回答