WPF实现可改变大小的无边框窗体

这里记载一个WPF中比较实用的功能,怎样处理一个无边框窗体。通常的做法是设置WindowStyle="None" 和ResizeMode="NoResize",但这样有一个问题,窗体的大小不能够通过拖动进行改变。于是,很多的解决方式如下:

<Window x:Class="TestProject.ScratchWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
        ResizeMode="CanResizeWithGrip"
        WindowStyle="None" 
        AllowsTransparency="True"
</Window>

这样的解决方案基本上达到了效果,不过较真起来依然存在问题,因为只能够拖动窗体右下角的“三角形”图标,来进行窗体大小改变,同时这个图标也破坏了界面的一体性,不符合当下主流窗体的处理方式。那么有没有解决方式了,恩,有的,经查阅网上资料,找到两种方式解决上树问题,达到鼠标放到窗体边界,即可拖动改变窗体大小。

第一种:使用WindowChrome来解决,首先,下载Microsoft Ribbon for WPF.msi,下载地址https://www.microsoft.com/en-us/download/details.aspx?id=11877#filelist

接着,在项目中添加对window.shell的引用

紧接着,在xaml界面中,增加命令空间和WindowChrome控件,以便WindowChrome能够覆盖整个窗体界面。

至此,完成功能所求。

第二种,在Windows ControlTemplate中增加8个背景透明Rectangle,分别放置于Left, Right, Top, TopLeft, TopRight, Bottom, BottomLeft, BottomRight这8个位置,监控鼠标的位置,当在这些区域的时候,鼠标样式更改并添加拖动事件的处理,从而改变整个窗体区域的大小。具体不做概述了,参考文章链接https://www.cnblogs.com/yang-fei/p/4737308.html

扫描二维码关注公众号,回复: 8542044 查看本文章
发布了120 篇原创文章 · 获赞 50 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/u014650759/article/details/94722965