当前位置: 首页 > news >正文

WPF常用控件-Window

常用属性

这里重点记录一些关键且容易忘记的属性,那些很常用的如Title啥的就不在这里一一说明了。

任务栏按钮

ShowInTaskbar:是否在任务栏中显示应用按钮,默认为True

层级

Topmost:应用是否始终在所有应用的最上层,默认为False

图标

Icon:设置应用窗体左上角的图标。

事件函数

Loaded:指定窗体加载函数,例如Loaded="Window_Loaded"

Closing:指定窗体的关闭事件处理函数。

MouseDoubleClick:指定窗体的双击事件处理函数。

WindowChrome

在WPF中,如果希望设置窗体无边框,是可以通过设置窗体WindowsWindowStyle="None"来实现的。但是通过这种方式设置的无边框窗口,缺少了边框阴影、边框拉伸、边框移动、双击放大/缩小等一系列的功能。对于此WPF提供了更加简便的方式,即WindowChrome

<Window x:Class="WPFStudy.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"mc:Ignorable="d"xmlns:local="clr-namespace:WPFStudy"Title="MainWindow"Height="450" Width="800"><WindowChrome.WindowChrome><WindowChrome/></WindowChrome.WindowChrome><Grid></Grid>
</Window>

在这里插入图片描述
标题区域高度设置

CaptionHeight:指定窗口顶部的标题区域的高度。

<WindowChrome.WindowChrome><WindowChrome CaptionHeight="50"/>
</WindowChrome.WindowChrome>

取消默认按钮

使用WindowChrome之后,虽然看不见,但是那几个默认的按钮还是存在的,如果鼠标点击对应的位置,就会触发相应的功能。如果要屏蔽这三个默认按钮,可以使用以下属性。

UseAeroCaptionButtons:是否启用标题按钮的命中测试,也就是点击对应位置是否触发这三个标题按钮,默认为True,设为False即可屏蔽。

<WindowChrome.WindowChrome><WindowChrome UseAeroCaptionButtons="False"/>
</WindowChrome.WindowChrome>

玻璃边框宽度

GlassFrameThickness:设置窗体玻璃边框的宽度,官方文档中有说,如果指定 GlassFrameThickness 值为 -1,那么可以做到整个窗口都遮挡,所以一般设置为1就可以了。如果要禁用这个效果,则设置为0即可。

缩放区域宽度

如果没有禁用窗口的缩放,在希望改变缩放触发区域宽度时,可以通过ResizeBorderThickness属性进行修改。

<WindowChrome.WindowChrome><WindowChrome ResizeBorderThickness="10"/>
</WindowChrome.WindowChrome>

标题栏遮挡子控件的处理

当窗体内的子控件出与窗体标题区域重叠时,默认会被标题区域遮挡,如果希望优先使用子控件,可以在子控件中使用以下属性。

WindowChrome.IsHitTestVisibleInChrome:附加属性,是否优先点击窗体中的可见区域,默认为false

<WindowChrome.WindowChrome><WindowChrome CaptionHeight="50" UseAeroCaptionButtons="False"/>
</WindowChrome.WindowChrome>
<Grid><Button WindowChrome.IsHitTestVisibleInChrome="True" Width="50" Height="50" Content="button" HorizontalAlignment="Right" VerticalAlignment="Top" />
</Grid>

WindowStyle方式

属性设置

<Window ......WindowStyle="None"Background="Transparent"AllowsTransparency="True"......
>......
</Window>

窗体拖动

有些情况下只能通过WindowStyle的方式来设置窗体的无边框样式(例如异样窗口下无法使用WindowChrome),此时如果要实现窗体的拖动,就需要在对应的区域内设置

<Grid><Label Background="Yellow" Height="20" VerticalAlignment="Top" MouseDown="Label_MouseDown"/>
</Grid>
private void Label_MouseDown(object sender, MouseButtonEventArgs e)
{DragMove();//吓尿了,比winform简单很多
}

无边框遮挡任务栏解决方案

在使用WindowStyle="None"的方式设计无边框窗体时,将窗体最大化会遮挡屏幕下方的任务栏。针对这个问题有一个较好的解决方案是在窗体加载时设置窗体的最大宽度和高度。

public MainWindow()
{InitializeComponent();MaxWidth = SystemParameters.MaximizedPrimaryScreenWidth;MaxHeight = SystemParameters.MaximizedPrimaryScreenHeight;
}
http://www.lryc.cn/news/276378.html

相关文章:

  • 计算机网络——实验七
  • 数据分析基础之《pandas(1)—pandas介绍》
  • LLM_InterLM-Demo学习
  • 倍思科技红海突围要义:紧随新趋势,“实用而美”理念从一而终
  • 十、HTML 样式- CSS
  • Spring的mybatis整合
  • React 入门 - 01
  • Windows Server 2019 Standard 和 Datacenter 版本差异比较
  • 计算机网络的交通灯:停止-等待协议
  • 命令行模式的rancher如何安装?
  • 苍穹外卖Day01——总结1
  • Java 基础(二)
  • BERT 模型是什么
  • Elasticsearch中object类型与nested类型以及数组之间的区别
  • 办公文档,私人专用
  • linux 使用log4cpp记录项目日志
  • Kafka集群部署
  • 软件测试|深入理解SQL CROSS JOIN:交叉连接
  • 数据权限-模型简要分析
  • echarts柱状图加单位,底部文本溢出展示
  • x-cmd pkg | gh - GitHub 官方 CLI
  • Python解析XML,简化复杂数据操作的最佳工具!
  • rpm数据库被破坏,无法使用yum
  • 国标GB28181视频监控EasyCVR平台:视频集中录制存储/云端录像功能及操作介绍
  • Wargames与bash知识11
  • Python 基础(一):基本语句
  • Hibernate实战之操作MySQL数据库(2024-1-8)
  • 【Spring Boot 3】【数据源】自定义JDBC多数据源
  • 番茄工作法
  • 【uniapp】调用阿里云OCR图片识别文字: