在UserControl中定义KeyBindings,但要使它们适用于整个窗口



我希望有一些键盘快捷键可以在应用程序范围内使用,无论当前焦点在哪里。

此刻,我已经在我的主窗口的XAML中定义了<Window.InputBindings>。一切都很好,但是……Ribbon被封装为一个单独的UserControl,所有的快捷键自然都与Ribbon中的按钮相关。
因此,我真的不喜欢在两个类中使用两个应用程序逻辑处理相同的功能。

理想情况下,我想将KeyBindings定义为<Window.InputBindings>,但在UserControl中,而不是在窗口中。显然,这不能用XAML语法完成,但只有<UserControl.InputBindings> -唉,这将使它们仅在焦点放在功能区上时可用(这意味着永远不会)。

有什么建议吗?

谢谢,亚历克斯

在控件的构造函数中或在其Loaded()事件处理程序中,让它找到它所在的窗口(使用VisualTreeHelper.GetParent(this)递归直到GetType为window…),然后添加您想要的InputBindings到该窗口

最新更新