C# WPF 如何通过快捷键实现程序窗口最小化与最大化功能
WPF窗口快捷键实现最小化/最大化的调整方案
- 核心修改逻辑:你原有代码仅绑定了预定义的
ApplicationCommands.Open命令,但没有关联对应窗口状态修改的执行逻辑,需要补充命令绑定和处理方法。 - 最简实现代码(窗口激活时生效,适合新手直接复用)
// 窗口类内声明自定义路由命令 public static readonly RoutedCommand MinimizeCommand = new RoutedCommand(); public static readonly RoutedCommand MaximizeCommand = new RoutedCommand(); public static readonly RoutedCommand RestoreCommand = new RoutedCommand(); public MainWindow() { InitializeComponent(); // 绑定命令对应的执行逻辑 CommandBindings.Add(new CommandBinding(MinimizeCommand, ExecuteMinimize)); CommandBindings.Add(new CommandBinding(MaximizeCommand, ExecuteMaximize)); CommandBindings.Add(new CommandBinding(RestoreCommand, ExecuteRestore)); // 配置快捷键绑定:Ctrl+M 最小化,Ctrl+上箭头 最大化,Ctrl+下箭头 还原 InputBindings.Add(new KeyBinding(MinimizeCommand, Key.M, ModifierKeys.Control)); InputBindings.Add(new KeyBinding(MaximizeCommand, Key.Up, ModifierKeys.Control)); InputBindings.Add(new KeyBinding(RestoreCommand, Key.Down, ModifierKeys.Control)); } // 最小化执行方法 private void ExecuteMinimize(object sender, ExecutedRoutedEventArgs e) { this.WindowState = WindowState.Minimized; } // 最大化执行方法 private void ExecuteMaximize(object sender, ExecutedRoutedEventArgs e) { this.WindowState = WindowState.Maximized; } // 还原窗口执行方法 private void ExecuteRestore(object sender, ExecutedRoutedEventArgs e) { this.WindowState = WindowState.Normal; }
- 补充说明
- 上述代码的快捷键仅在当前窗口处于激活状态时触发,如果需要窗口失去焦点后仍能响应全局快捷键,需要调用Win32 API的
RegisterHotKey/UnregisterHotKey方法实现。 - 如果你使用MVVM框架开发,可以将命令替换为框架自带的委托命令(如Prism的
DelegateCommand、CommunityToolkit.Mvvm的RelayCommand),将状态修改逻辑移到ViewModel中即可。
- 上述代码的快捷键仅在当前窗口处于激活状态时触发,如果需要窗口失去焦点后仍能响应全局快捷键,需要调用Win32 API的
内容的提问来源于stack exchange,提问作者dersowlyy
相关产品推荐
相关产品推荐

