繁体   English   中英

如何向命令添加其他操作

[英]How to add additional actions to command

我从已经处理ApplicationCommands.Close命令的窗口控件继承,因此它可以本地处理关闭窗口。

我想添加/覆盖现有功能,但是我似乎无法弄清楚该如何做。

尝试:

  • CommandBindings添加另一个相同的命令(首先声明似乎是成功的)
  • 检查命令是否已经存在...似乎找不到执行此操作的方法

您可以尝试几种方法。 如果您只是试图防止窗口关闭,则可以重写OnClosing方法并设置canceled标志:

protected override void OnClosing(CancelEventArgs e)
{
    e.Cancel = true;
    base.OnClosing(e);
}

如果要专门更改行为,可以注册命令的预览版本:

<Window.CommandBindings>
    <CommandBinding Command="ApplicationCommands.Close"
                    PreviewExecuted="CloseCommandHandler"
                    PreviewCanExecute="CanExecuteHandler" />
</Window.CommandBindings>

预览路由事件将在标准事件之前发生,从而使您可以在基类之前处理逻辑。

如果要替换全局命令的功能,则可以找到特定的命令绑定,将其删除,然后添加自己的逻辑。 见下文。

    public ChildWindow()
        :base()
    {
        var appCloseCommandBinding =
            CommandBindings.Cast<CommandBinding>().SingleOrDefault(item => item.Command == ApplicationCommands.Close);

        if(appCloseCommandBinding != null)
            CommandBindings.Remove(appCloseCommandBinding);

        CommandBindings.Add(new CommandBinding(ApplicationCommands.Close, YourCommandLogic));
    }

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM