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

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值