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

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

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

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

  具体需求:

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

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

  具体实现:

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

  

1 public A()         
2 {
3             MouseLeftButtonDown += A_MouseLeftButtonDown;
4 }
5  private void A_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)         
6 {             
7             DragMove();        
8  }    

 

  在一切感觉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

posted @ 2012-11-04 08:36  Lyghost  阅读(679)  评论(0编辑  收藏  举报