【问题标题】:Passing an enum value as command parameter from XAML从 XAML 传递枚举值作为命令参数
【发布时间】:2010-09-26 11:01:13
【问题描述】:

我想在 WPF 中将枚举值作为命令参数传递,使用如下方式:

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

SearchPageType 是一个枚举,这是为了知道从哪个按钮搜索命令被调用。

这在 WPF 中是否可行,或者如何将枚举值作为命令参数传递?

【问题讨论】:

    标签: .net wpf silverlight xaml command


    【解决方案1】:

    试试这个

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

    local - 是您在 XAML 中的 namespace reference

    【讨论】:

    • 如果我在这个命名空间my.namespace中有一个名为“MyEnum”的枚举,如何定义“local”?
    【解决方案2】:

    还请记住,如果您的枚举位于另一个类中,则需要使用 + 运算符。

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

    【讨论】:

      【解决方案3】:

      您可以为此使用属性元素语法而不是属性语法:

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

      【讨论】:

      • 枚举名称作为 XAML 标记?哇,我永远无法想象这样的语法会起作用,但它确实如此!
      【解决方案4】:

      此外,如果您想提供 [Flags] 枚举,您可以使用属性元素语法:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-24
        • 2012-08-04
        • 2012-07-31
        • 1970-01-01
        • 2011-12-30
        • 2012-04-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多