WPF程序禁止win7窗口自动最大化

来源:互联网 发布:血族手游 知乎 编辑:程序博客网 时间:2024/05/01 01:00

相信用过windows7的朋友都知道,当我们将某个窗口拖拽到屏幕的顶部时窗口就会自动最大化,拖动到屏幕左右测边缘时,窗口会占据半个屏幕大小。这是windows7带来的新功能新亮点之一。

但是如果在具体项目具体需求时,windows7的这种特性往往会阻碍我们意愿,成为我们的绊脚石。

那么该篇文章介绍,WPF 程序Window窗口移动时屏蔽windows7的这种特性。

具体需求:

WPF项目中的window:A.xaml 有具体width和height,例:width:500,height:500;

不允许大小更改,且可以拖拽

具体实现:

在A.xaml页面中定义MouseLeftButtonDown事件,然后做拖动操作,代码如下:

 public A()
        {

            MouseLeftButtonDown+= A_MouseLeftButtonDown;

        }

 private voidA_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            DragMove();
        }

在一切感觉OK时,却遇到一个问题,就是当移动窗体到屏幕边缘时,会触发windos7的窗口最大化特性。

尝试方法:

在网上搜索“WPF程序屏蔽win7窗口自动最大化”,但是搜索出的结果都是怎样从计算机设置中屏蔽win7的这种特性,非我所愿。

于是转化另外一种思路,搜索“WPF Window类”,找到Window.ResizeMode 属性

msdn解释:获取或设置大小调整模式。

存在一下四种选项:

NoResize。用户无法调整窗口的大小。不显示最小化框和最大化框。

CanMinimize。用户只能最小化窗口以及从任务栏还原窗口。同时显示最小化框和最大化框,但只有最小化框处于启用状态。

CanResize。用户完全能够使用最小化框和最大化框以及一个环绕窗口的可拖动轮廓来调整窗口大小。显示并启用最小化框和最大化框。(默认值)。

CanResizeWithGrip。此选项的功能与 CanResize 相同,但在窗口右下角添加了一个“大小调整手柄”。

显而易见,我们会采用NoResize枚举值。

解决方法:

设置A.xaml中的ResizeMode=NoResize,即达到屏蔽windows7的这种特性。

大功告成!O(∩_∩)O~


转载地址 http://blog.sina.com.cn/s/blog_5f2ed5cb0100v749.html


另外有个问题 在win7下  左右拖拽半屏最大化都可以,向上拖拽的时候不正常,希望看到这的大侠看看这个问题

源码:http://download.csdn.net/detail/wutuomail/7898003


0 0