我从一个已经处理ApplicationCommands.Close
命令的窗口控件继承,以便它本地处理关闭窗口。
我想添加/覆盖现有功能,但我似乎无法弄清楚如何做到这一点。
尝试:
CommandBindings
添加另一个相同的命令(首先声明似乎赢了)答案 0 :(得分:1)
您可以尝试一些事情。如果您只是想阻止窗口关闭,可以覆盖OnClosing
方法并设置已取消的标记:
protected override void OnClosing(CancelEventArgs e)
{
e.Cancel = true;
base.OnClosing(e);
}
如果要专门更改行为,可以注册命令的预览版本:
<Window.CommandBindings>
<CommandBinding Command="ApplicationCommands.Close"
PreviewExecuted="CloseCommandHandler"
PreviewCanExecute="CanExecuteHandler" />
</Window.CommandBindings>
预览路由事件将在标准事件之前发生,允许您在基类之前处理逻辑。
答案 1 :(得分:0)
如果要替换全局命令的功能,可以找到特定的命令绑定,删除它然后添加自己的逻辑。见下文。
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));
}
希望它可以提供帮助。