关于WPF 窗体的AllowsTransparency属性

在窗体设置了AllowsTransparency 属性后,最小化后恢复可能会遇到渲染问题,解决此问题可以重载窗体的OnStateChanged方法,在方法中处理最小化事件,如下:

        protected override void OnStateChanged(EventArgs e)
        {
            switch(WindowState)
            {
                case WindowState.Minimized:
                    Opacity = 0;
                    break;
                default:
                    Opacity = 1;
                    break;
            }
        }

原理就是在最小化时将窗体设置为全透明,之后恢复时在设置为不透明

在设置AllowsTransparency属性后还会有一个问题,窗体无法拖动,此时可以在窗体属性中加入以下模版:


    
        
    

CaptionHeight为窗体标题栏拖动的感应范围,ResizeBorderThickness为四边可缩放的感应范围

在设置AllowsTransparency属性后最大化窗体会使窗体全屏显示,此时同样可以在OnStateChanged中将窗体的最大高度设置为工作区的高度

你可能感兴趣的:(wpf,microsoft)