簡體   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