![](/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.