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

WPF如何实现窗口最小化时保留系统原生窗口动画效果

WPF窗口最小化保留系统原生动画的实现方法

直接设置WindowState = WindowState.Minimized没有动画是因为WPF对该属性的底层实现跳过了系统窗口消息的标准处理流程,不会触发系统预设的最小化过渡动画。

推荐使用调用Win32 API发送系统最小化消息的方案,完全模拟点击标题栏最小化按钮的原生行为,自动携带系统默认动画,实现步骤如下:

  • 首先导入Win32 API声明:
using System.Runtime.InteropServices;
using System.Windows.Interop;

// 在你的窗口类内部添加以下代码
[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
private const uint WM_SYSCOMMAND = 0x0112;
private const IntPtr SC_MINIMIZE = (IntPtr)0xF020;
  • 需要触发最小化时调用以下代码即可:
// 获取当前窗口的句柄,this为当前Window实例
IntPtr windowHandle = new WindowInteropHelper(this).Handle;
SendMessage(windowHandle, WM_SYSCOMMAND, SC_MINIMIZE, IntPtr.Zero);

注意事项

  • 该方案完全遵循系统窗口行为,动画效果和系统设置完全同步:如果系统开启了窗口动画就会显示,关闭则无,和原生窗口最小化效果完全一致
  • 即使是自定义无边框窗口(WindowStyle="None"),只要没有额外禁用系统窗口的标准行为,该方案同样生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:57:02