我正在尝试向我的窗口应用程序添加一些热键,这样如果我按下Ctrl+Q,它就会执行一个操作。我真搞不懂。我查看了堆栈溢出和MSDN,但找不到我需要的答案。所以这就是我现在拥有的
xaml:
<Grid KeyDown="Grid_KeyDown" KeyUp="Grid_KeyUp">
<Menu Height="20" VerticalAlignment="Top" >
<MenuItem Name="MenuItemFile" Header="File" >
<MenuItem Name="CloseApp" Header="Close" Icon="" Click="CloseApp_Click" AutomationProperties.AcceleratorKey="Control L" InputGestureText="Ctrl+X"/>
</MenuItem>c#
private void Grid_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.LeftCtrl)
{
switch (e.Key)
{
case Key.L:
This.Close();
break;
}
}
}发布于 2014-03-21 18:17:23
可以将键绑定到XAML中的命令:
<Window.InputBindings>
<KeyBinding Key="Q" Modifiers="Control" Command="ApplicationCommands.Close"/>
</Window.InputBindings>
<Window.CommandBindings>
<CommandBinding Command="ApplicationCommands.Close" Executed="CloseCommandHandler"/>
</Window.CommandBindings>然后在代码隐藏中定义命令应该做什么:
private void CloseCommandHandler(object sender, ExecutedRoutedEventArgs e)
{
this.Close();
}或者将其映射到ViewModel中的命令,如果您使用的是MVVM模式。
发布于 2014-03-21 17:52:03
你只需通过
private void Grid_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Q && e.Modifiers == Keys.Control)
{
// do stuff
}
}发布于 2014-03-21 17:56:59
这是在一个不同的方向,但WPF的命令,可以帮助您以及这一点。您可以定义RoutedCommand或RoutedUICommand,并将EventHandlers附加到CanExecute和Executed事件中。命令还可以将KeyBindings与修改键(如Ctrl或Shift )结合使用。当您想要构造更大的应用程序时,这一点尤其有用。
下面是关于如何:创建RoutedCommand和关于命令的概述的一些详细信息
https://stackoverflow.com/questions/22565923
复制相似问题