按住Control键时使用热键
本文关键字:Control 按住 | 更新日期: 2023-09-27 17:51:12
我正在尝试添加一些热键到我的窗口应用程序,以便如果我按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;
}
}
}
您可以将键绑定到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模式的话。
您可以通过
private void Grid_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Q && e.Modifiers == Keys.Control)
{
// do stuff
}
}
这是在一个不同的方向,但WPF的命令可以帮助您这样做。您可以定义RoutedCommand
或RoutedUICommand
,并将eventandler附加到CanExecute
和Executed
事件。命令也可以与修改键(如Ctrl
或Shift
)结合使用键绑定。当你想构建一个更大的应用程序时,这尤其有用。
下面是关于如何创建RoutedCommand的一些细节,以及关于命令
可以用ALT代替CTRL吗?如果是这样,请尝试一下-它是内置的:
WPF中的助记键