![](/img/trans.png)
[英]How to not execute additional code in OnActionExecutionAsync for specific actions?
[英]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.