[英]C# Hotkeys while holding Control
我正在嘗試向Windows應用程序中添加一些熱鍵,以便如果我按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;
}
}
}
您可以簡單地通過
private void Grid_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Q && e.Modifiers == Keys.Control)
{
// do stuff
}
}
現在這是一個不同的方向,但是WPF的命令也可以幫助您。 您可以定義RoutedCommand
或RoutedUICommand
並將EventHandlers附加到CanExecute
和Executed
事件。 命令還可以具有KeyBindings以及Ctrl
或Shift
類的修改鍵。 當您要構建更大的應用程序時,這特別有用。
以下是有關如何:創建RoutedCommand的一些詳細信息以及有關命令的概述
您可以將密鑰綁定到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();
}
如果使用的是MVVM模式,也可以將其映射到ViewModel中的命令。
可以使用ALT代替CTRL嗎? 是的,請嘗試一下-它內置於:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.