【发布时间】:2011-05-18 10:43:30
【问题描述】:
我有一个 WPF(prism)应用程序,它使用大量其他 WPF 程序集,甚至包含其他窗口(wpf 和 win32)的 win32 dll。
当用户按下功能键(F2-F12)时,我想打开特定的程序功能。
类似这样的:
RoutedCommand commandF4 = new RoutedCommand();
commandF4.InputGestures.Add(new KeyGesture(Key.F4));
Application.Current.MainWindow.CommandBindings.Add(new CommandBinding(commandF4, CallCommandF4));
问题是:这仅在 MainWindow 具有焦点时才有效。如果我打开辅助 WPF 窗口(或 win32 窗口),则键绑定不再适用。
有没有办法为 F4(或其他键)添加应用程序范围的全局热键?
或者至少是 WPF 范围内的热键?
【问题讨论】:
-
Input focus can only be on one window at any point in time。您可以尝试在辅助窗口中捕获键绑定,并使用messaging 与 MainWindow 通信该键被按下。 Win32 窗口可能需要较低级别的键盘挂钩和排序。