none
窗体最小化和恢复时的动画问题 RRS feed

  • 问题

  • 为了实现自定义的窗体,我使用了WindowStyle=None去掉边框,然后自己实现了最小化按钮

    我使用如下代码将窗体最小化

    this.WindowState = WindowState.Minimized; 
    
    问题来了,这样窗体可以最小化,但没有了Windows的最小化时的动画效果(例如win7下窗体收缩至任务栏)

    如何才能重新获得相应的动画效果呢?


    --!
    2011年10月22日 14:19

答案

  • 呵呵 不是冷 是忙啊~

    这样做就好了

     protected override void OnActivated(EventArgs e)
            {
                base.OnActivated(e);
                if (WindowStyle != WindowStyle.None)
                {
                    Dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, (DispatcherOperationCallback)delegate(object unused)
                        {
                            WindowStyle = WindowStyle.None;
                            return null;
                        }
                    , null);
                }
            }
    
            private void minimizeButton_Click(object sender, RoutedEventArgs e)
            {
                WindowStyle = WindowStyle.SingleBorderWindow;
                WindowState = WindowState.Minimized;
            }
    

     

     


    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Bunliney 2011年10月27日 5:05
    2011年10月26日 5:16
    版主

全部回复

  • WPF区真是冷啊
    --!
    2011年10月24日 9:09
  • 呵呵 不是冷 是忙啊~

    这样做就好了

     protected override void OnActivated(EventArgs e)
            {
                base.OnActivated(e);
                if (WindowStyle != WindowStyle.None)
                {
                    Dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, (DispatcherOperationCallback)delegate(object unused)
                        {
                            WindowStyle = WindowStyle.None;
                            return null;
                        }
                    , null);
                }
            }
    
            private void minimizeButton_Click(object sender, RoutedEventArgs e)
            {
                WindowStyle = WindowStyle.SingleBorderWindow;
                WindowState = WindowState.Minimized;
            }
    

     

     


    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Bunliney 2011年10月27日 5:05
    2011年10月26日 5:16
    版主
  • 最小化和恢复的时候会有一瞬间显示出了标题栏,但是个折中的办法了。
    --!
    2011年10月27日 5:04
  • 因为设置WindowStyle=None后,界面还是有边框,所以另外设置了AllowsTransparency=true,这时候上面的方法就用不了了,请问有什么解决方案么
    2014年8月24日 14:13