【问题标题】:Is it possible to add an "Executed=*" to ApplicationCommands.*?是否可以在 ApplicationCommands.* 中添加“Executed=*”?
【发布时间】:2014-08-23 10:58:34
【问题描述】:

我写了一些 XAML,这是我想出的菜单:

<Menu Width="Auto" Height="32" DockPanel.Dock="Top">
    <MenuItem Header="Delete Row"  Command="ApplicationCommands.Delete" />
    <MenuItem Header="Save Changes" Command="ApplicationCommands.Save"/>
</Menu>

现在我注意到ApplicationCommands.Delete 做得很好,ApplicationCommands.Save 但没有。 我想我应该制作一种方法来保存这些更改,但由于某种原因我无法添加 Executed="" 属性? 所以它可能是这样的:

<MenuItem Header="Save Changes" Command="ApplicationCommands.Save" Executed="SaveMethod"/>

【问题讨论】:

  • 好吧,MenuItem 既没有属性也没有事件Executed,所以这个语法是行不通的。你真正的问题是什么?在您的情况下,“做得不好”到底是什么意思?
  • 也许你忘了CommandManager.RegisterClassCommandBinding之类的东西。

标签: c# xaml dockpanel


【解决方案1】:

根据您的实际目的,这可能有效:

<Menu Width="Auto" Height="32" DockPanel.Dock="Top">
    <Menu.CommandBindings>
        <CommandBinding Command="ApplicationCommands.Save"
                        Executed="SaveMethod"
                        CanExecute="CanSaveMethod"/>
    </Menu.CommandBindings>
    <MenuItem Header="Delete Row"  Command="ApplicationCommands.Delete" />
    <MenuItem Header="Save Changes" Command="ApplicationCommands.Save"/>
</Menu>

或者您可能需要为ApplicationCommands.SaveCommandManager.RegisterClassCommandBinding 声明一个全局处理程序。

【讨论】:

    猜你喜欢
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 2020-09-26
    • 2013-07-09
    • 2021-08-21
    相关资源
    最近更新 更多