如何在XAML中的CommandParam中具有枚举价值
-
29-09-2019 - |
题
我有以下代表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>
不隶属于 StackOverflow