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

时间:2011-11-26 22:46:44

标签: wpf user-controls keyboard-shortcuts inputbinding

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

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

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

有什么建议吗?

谢谢, 亚历

1 个答案:

答案 0 :(得分:2)

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