如何在每个WPF窗口中处理快捷键?
-
16-09-2019 - |
题
我想根据一些自定义逻辑将帮助文件打开到页面。如何处理所有窗口(主窗口和模态对话框)上按F1的用户?
我知道如何在单个窗口中处理F1,但是可以在全球上完成,因此我不必在所有窗口中添加相同的代码?
以下是我尝试过的测试,即F1在子窗口上不起作用。
window1.xaml:
<Window x:Class="WpfApplication2.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Window.CommandBindings>
<CommandBinding Command="ApplicationCommands.Help"
Executed="CommandBinding_Executed"/>
</Window.CommandBindings>
<Grid>
<Button Content="Open a new window"
Click="Button_Click"/>
</Grid>
</Window>
window1.xaml.cs:
using System.Windows;
using System.Windows.Input;
namespace WpfApplication2
{
partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
MessageBox.Show("Help");
}
void Button_Click(object sender, RoutedEventArgs e)
{
new Window().ShowDialog();
}
}
}
解决方案
我找到了答案 这个 页。也就是说,将其放在主窗口的构造函数中:
CommandManager.RegisterClassCommandBinding(typeof(Window),
new CommandBinding(ApplicationCommands.Help,
(x, y) => MessageBox.Show("Help")));
不隶属于 StackOverflow