wpf – 在UserControl中定义KeyBindings,但是它们适用于整个窗口吗?

我希望在应用程序范围内提供许多键盘快捷键,无论当前焦点在哪里.

目前我已将其定义为< Window.InputBindings>在我的主窗口的XAML中.
一切都很好,但……
功能区封装为单独的UserControl,所有快捷方式自然与该功能区中的按钮相关.
因此,我真的不喜欢有两个应用程序逻辑处理相同功能的气味分散在两个类中.

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

有什么建议?

谢谢,
亚历克斯

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

点赞