【发布时间】:2014-02-20 11:50:24
【问题描述】:
我想要一个自定义的窗口,所以遵循了一些教程,通过将窗口样式设置为无,然后自己添加标题栏/恢复/最小化/关闭按钮来实现这一点。最小化是通过简单处理点击事件并将Window-state设置为最小化来实现的,但这并没有显示你在Windows 7上看到的最小化动画,只是瞬间隐藏了窗口,与其他窗口一起使用时感觉很奇怪做动画,因为您倾向于感觉应用程序正在关闭。
那么,是否有启用该动画的方法? .. 当您将 WindowStyle 更改为 none 时,它似乎被禁用了。
编辑:测试代码
public partial class MainWindow : Window
{
public MainWindow()
{
WindowStyle = WindowStyle.None;
InitializeComponent();
}
[DllImport("user32.dll")]
static extern int SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
base.OnMouseLeftButtonDown(e);
// this doesnt seem to animate
SendMessage(new WindowInteropHelper(this).Handle, 0x0112, (IntPtr)0xF020, IntPtr.Zero);
}
protected override void OnMouseRightButtonDown(MouseButtonEventArgs e)
{
base.OnMouseRightButtonDown(e);
WindowStyle = WindowStyle.SingleBorderWindow;
WindowState = WindowState.Minimized;
}
protected override void OnActivated(EventArgs e)
{
base.OnActivated(e);
Dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, new Action(() => WindowStyle = WindowStyle.None));
}
}
【问题讨论】:
标签: wpf animation styles minimize