如何在 wpf 应用程序中制作自定义热键并执行各种操作,如使字段可编辑、保存窗口、转到字段索引。
我正在开发一个包含三个窗口 + 1 个主窗口的 wpf 应用程序。我在主窗口上显示热键快捷方式,以便在所有窗口上都可见。现在我想让应用程序根据我作为热键组合击中的键执行操作。
我已经编写了代码,但是当我在调试模式下运行应用程序时,该Window_KeyDown()
方法会在第一次按键时被命中。例如,如果我点击Alt+F
然后代码进入 Alt 本身进入Keyboard.Modifiers
.
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 } }
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"
>
- 在主窗口以外的窗口上
我也在尝试对单键点击执行操作。例如,当我按“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>