You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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中即可。

内容的提问来源于stack exchange,提问作者dersowlyy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:36:03