从XAML传递枚举值作为命令参数

205

我想在WPF中将枚举值作为命令参数传递,使用类似于以下代码:

<Button 
    x:Name="uxSearchButton" 
    Command="{Binding Path=SearchMembersCommand}" 
    CommandParameter="SearchPageType.First"
    Content="Search">
</Button>

SearchPageType是一个枚举类型,用于确定搜索命令来自哪个按钮。

在WPF中,是否可以传递枚举值作为命令参数?

5个回答

329

试试这个

<Button CommandParameter="{x:Static local:SearchPageType.First}" .../>

local - 是你在 XAML 中使用的命名空间引用。namespace reference


189

还要记住,如果你的枚举类型在另一个类中,你需要使用+运算符。

<Button CommandParameter="{x:Static local:MyOuterType+SearchPageType.First}".../>

53
您可以使用属性元素语法而不是属性语法来实现此功能:
<Button x:Name="uxSearchButton"
        Command="{Binding Path=SearchMembersCommand}"
        Content="Search">
    <Button.CommandParameter>
        <SearchPageType>First</SearchPageType>
    </Button.CommandParameter>
</Button>

枚举名称作为XAML标记?哇,我从未想过这样的语法会起作用,但它确实可以! - Yury Schkatula

32

如果你想提供一个 [Flags] 枚举,你可以使用属性元素语法:

也就是说,如果您希望提供一个名为 "Flags" 的枚举类型,可以使用属性元素语法:

<Button>
  <Button.CommandParameter>
    <SearchPageType>First,Second</SearchPageType>
  <Button.CommandParameter>
</Button>

-1
尝试这个输入图像描述

CommandParameter="{x:Static "类命名空间,例如(Models)":SearchPageType.First}"


虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。如果链接页面更改,仅有链接的答案可能会失效。-【来自审查】 - Karl Stephen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接