首页 > 解决方案 > 如何在 wpf 应用程序中制作自定义热键并执行各种操作

问题描述

如何在 wpf 应用程序中制作自定义热键并执行各种操作,如使字段可编辑、保存窗口、转到字段索引。

我正在开发一个包含三个窗口 + 1 个主窗口的 wpf 应用程序。我在主窗口上显示热键快捷方式,以便在所有窗口上都可见。现在我想让应用程序根据我作为热键组合击中的键执行操作。

我已经编写了代码,但是当我在调试模式下运行应用程序时,该Window_KeyDown() 方法会在第一次按键时被命中。例如,如果我点击Alt+F然后代码进入 Alt 本身进入Keyboard.Modifiers.

  1. mainwindow.xaml.cs 中的代码

    private void Window_KeyDown(object sender, KeyEventArgs e) { e.Handled = true; var 修饰符 = Keyboard.Modifiers; var key = e.Key;

        if (key == Key.System)
        {
            key = e.SystemKey;
        }
    
        if (key == "C")
        {
            //make all the fields of the Window editable;
        }
        else if ((key == Key.D) && (modifiers == ModifierKeys.Alt))
        {
            //Perform delete operation
        } }
    
  2. mainwindow.xaml 中的代码

<窗口 x:Class="Namespace.MainWindow" Name="mainWindow"

    mc:Ignorable="d"
    Title="ApplicationName"
    Background="Black"
    Foreground="White"
    KeyDown="Window_KeyDown"
    d:DesignHeight="846.706"
    d:DesignWidth="857.544"
    WindowState="Maximized"
    >
  1. 在主窗口以外的窗口上

我也在尝试对单键点击执行操作。例如,当我按“C”时,我的窗口字段的属性 = Isreadonly 设置为 false,默认情况下,我将文本框类型字段设置为 true。我在三个窗口的每个 .XAML 文件下设置此样式属性。

<Style TargetType="TextBox" x:Key="txtRow1Style"><Setter Property="FontFamily" Value="Segoe UI Semibold"></Setter><Setter Property="Margin" Value="5,0,0,0"></Setter><Setter Property="HorizontalAlignment" Value="Stretch"></Setter><Setter Property="Height" Value="20"></Setter><Setter Property="IsReadOnly" Value="True"></Setter><Style.Triggers><DataTrigger Binding="{Binding NameSpace.MainWindow.Key}" Value="C"><Setter Property="IsReadOnly" Value="False"></Setter></DataTrigger></Style.Triggers></Style>

标签: c#.netwpfxamlglobal-hotkey

解决方案


推荐阅读