深入探讨WPF窗口不规则形式实现技巧
创始人
2024-06-18 03:21:04
0

WPF中的窗口实现,在许多应用程序中都是比较常用到的。而且根据开发人员需求的不同,WPF窗口还可以根据需求进行各种形态的变化。#t#

在WPF窗口要实现不规则形状的窗口其实很简单,首先我们要设置几个Window的属性,如下:

  1. < Window x:Class="Borderless
    Window.Window1"
     
  2. xmlns="http://schemas.microsoft.
    com/winfx/2006/xaml/presentation"
     
    xmlns:x="http://schemas.microsoft.
    com/winfx/2006/xaml"
     
  3. Title="BorderlessWindow" 
    Height="300" Width="300" 
  4. WindowStyle="None" Background=
    "{x:Null}" AllowsTransparency="True" 
  5. > 

这里我们设置了WindowStyle="None",这表示去掉WPF窗口的边框和标题栏;Background="{x:Null}"表示背景为透明,这一步必须做,因为默认的背景色是白色的;AllowsTransparency="True"是与WindowsStyle.None配合使用的,如果你在此时把WindowStyle="None"去掉,会收到一个错误。

在主窗口中,我们可以放入以下一段代码:

 

 

  1. < Grid> 
  2. < Border CornerRadius="5,5,5,5" 
    Background="#FF777777" 
    Height="Auto"> < /Border> 
  3. < /Grid> 

这表示一个带有圆弧弯角的矩形。

 

但这样是不是就实现了呢?当然不是,现在运行WPF窗口你会发现一些问题——无法拖动、无法关闭。不过不用担心,实现这些功能并不难,因为Window提供了相应的函数来实现拖动和关闭——DragMove和Close。

拖动的话,我们可以为Window添加一个MouseLeftButtonDown的事件处理程序,并在里面调用DragMove就可以了(不需要任何参数):

  1. public void DragWindow
    (object sender, Mouse
    ButtonEventArgs args)  
  2. {  
  3. this.DragMove();  

至于关闭,我们可以添加一个按钮,然后在Click事件处理程序中调用Close:

  1. public void CloseWindow
    (object sender, Routed
    EventArgs args)  
  2. {  
  3. this.Close();  

 

为了让关闭按钮更别致些,我对Button的Template做了重载。到这里就基本完成了WPF窗口的设置。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...