WPF常用控件-Window

news2024/9/23 23:31:38

常用属性

这里重点记录一些关键且容易忘记的属性,那些很常用的如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.coloradmin.cn/o/1368165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue2:通过ref获取DOM元素

一、场景描述 我们在页面的开发过程中&#xff0c;经常需要操作dom元素&#xff0c;来实现我们需要的效果。 以往js中&#xff0c;我们是通过给dom添加id&#xff0c;然后&#xff0c;通过js代码document来获取这个dom 简写代码案例&#xff1a; <h2 id"test"&…

TS 36.211 V12.0.0-下行(6)-同步信号

本文的内容主要涉及TS 36.211&#xff0c;版本是C00&#xff0c;也就是V12.0.0。

第18课 移植FFmpeg和openCV到Android环境

要在Android下从事音视频开发&#xff0c;同样也绕不开ffmpegopencv&#xff0c;不管是初学者还是有一定经验的程序&#xff0c;面临的首要问题就是环境的搭建和库文件的编译配置等问题&#xff0c;特别是初学者&#xff0c;往往会在实际开发前浪费大量的时间来编译ffmpeg及ope…

Qt 三维柱状图 Q3DBar 和 三维条形图中的数据序列 QBar3DSeries

(一) 使用 Q3DBars 图形类和 QBar3DSeries 序列类可以绘制三维柱状图 窗口右侧是用 Q3DBars 和 QBar3DSeries 绘制的三维柱状图&#xff0c;这个图只有一个QBar3DSeries序列&#xff0c;数据是按行存储的&#xff0c;可以有多行。水平方向是行坐标轴和列坐标轴&#xff0c;使用…

C++20新特性解析:深入探讨协程库的实现原理与应用

C20新特性解析&#xff1a;深入探讨协程库的实现原理与应用 一、C20的协程库简介二、C20协程基础知识2.1、协程的基本概念和使用方法2.2、C20中的协程支持2.3、协程与传统线程的对比 三、C20协程库的实现原理四、C20协程库的应用实例总结 一、C20的协程库简介 C20引入了对协程…

.NET学习教程一——.net基础定义+VS常用设置

一、定义 .NET分为.NET平台和.NET框架。 .NET平台&#xff08;厨房&#xff09;.NET FrameWork 框架&#xff08;柴米油盐酱醋茶&#xff09; .NET平台&#xff08;中国移动联通平台&#xff09;.NET FrameWork 框架&#xff08;信号塔&#xff09; .NET平台基于.NET Fra…

AutomationML 学习心得

断断续续地学习AutomationML&#xff08;下面简称AML&#xff09;&#xff0c;其内容很多。概念&#xff0c;术语与与其它建模语言有类似之处&#xff0c;也有不同。同时涉及了一大堆标准。 CAEX&#xff08;IEC 62424&#xff09;COLLADA 几何、动力学模型PLCopen XML 但是&a…

Windows下Redis5+可视化软件下载、安装和配置教程-2024年1月8日

Windows下Redis5下载、安装和配置教程-2024年1月8日 一、下载二、安装三、配置环境四、配置可视化客户端 一、下载 redis是现在是没有对win系统版进行维护的&#xff0c;这个是大神完成的&#xff0c;目前是到5版本&#xff0c;选择Redis-x64-5.0.14.1.zip点击下载 下载地址&…

Python Flask JinJa2 语法介绍与示例讲解

一、概述 Flask是一个轻量级的Python Web框架&#xff0c;支持Jinja2模板引擎。Jinja2是一个流行的Python模板引擎&#xff0c;它可以使用Flask来创建动态Web应用程序。 web 页面一般需要html、css和js&#xff0c;可能最开始学习python web的时候可能这样写&#xff1a; fr…

SpringBoot+策略模式实现多种文件存储模式

一、策略模式 背景 针对某种业务可能存在多种实现方式&#xff1b;传统方式是通过传统if…else…或者switch代码判断&#xff1b; 弊端&#xff1a; 代码可读性差扩展性差难以维护 策略模式简介 策略模式是一种行为型模式&#xff0c;它将对象和行为分开&#xff0c;将行…

4.6 BOUNDARY CHECKS

我们现在扩展了tile矩阵乘法内核&#xff0c;以处理具有任意宽度的矩阵。扩展必须允许内核正确处理宽度不是tile宽度倍数的矩阵。通过更改图4.14中的示例至33 M、N和P矩阵&#xff0c;图4.18创建了矩阵的宽度为3&#xff0c;不是tile宽度&#xff08;2&#xff09;的倍数。图4.…

服务器宕机怎么办?怎么预防宕机?

相信不少用户会听到或者在文章中提到电脑宕机或者服务器宕机&#xff0c;不少用户对宕机的意思不太理解。那么服务器宕机是什么意思&#xff1f; 宕机属于计算机的术语&#xff0c;指电脑或者服务器不能正常工作。口语中我们简单的把停掉机器叫做down机&#xff0c;转换为汉字是…

九、分布式锁 —— 超详细操作演示!!!

九、分布式锁 —— 超详细操作演示&#xff01; 九、分布式锁9.1 分布式锁的工作原理9.2 问题引入9.2.1 场景9.2.2 实现9.2.3 分析 9.3 setnx 实现方式9.3.1 原理9.3.2 实现9.3.3 问题 9.4 为锁添加过期时间9.4.1 原理9.4.2 实现9.4.3 问题 9.5 为锁添加标识9.5.1 原理9.5.2 实…

揭秘阿里自研搜索引擎 Havenask 在线检索服务

作者&#xff1a;谷深 Havenask 是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎&#xff0c;深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。本文针对性介绍了 Havenask 的在线服务&#xff0c;它具备高可用、高时效、低成本的优势&#xff0c;…

计算机网络学习笔记(四)

文章目录 1.介绍一下HTTPS的流程。2.介绍一下HTTP的失败码。3.说一说你知道的http状态码。4. 301和302有什么区别&#xff1f;5.302和304有什么区别&#xff1f;6. 请描述一次完整的HTTP请求的过程。7.什么是重定向&#xff1f;8. 重定向和请求转发有什么区别&#xff1f;9.介绍…

电子学会C/C++编程等级考试2023年12月(四级)真题解析

C/C++编程(1~8级)全部真题・点这里 第1题:移动路线 桌子上有一个m行n列的方格矩阵,将每个方格用坐标表示,行坐标从下到上依次递增,列坐标从左至右依次递增,左下角方格的坐标为(1,1),则右上角方格的坐标为(m,n)。 小明是个调皮的孩子,一天他捉来一只蚂蚁,不小心把蚂蚁…

如何让ArcGIS Pro启动显示空白页面

刚接触ArcGIS Pro的你是否会觉得在操作上有那么一些不习惯&#xff0c;从一开始软件启动就发现和ArcGIS差距很大&#xff1a;丰富的欢迎页面&#xff0c;加上默认加载的地图让你眼花缭乱&#xff0c;这里教你如何去掉这些繁杂的内容&#xff0c;还你一个干净的启动页面。 跳过…

2024年远控软件年度盘点:安全、稳定、功能之选

这目录 前言2024年热门远控软件ToDesk向日葵TeamViewerAnyDeskSplashtopAirDroidChrome Remote DesktopMicrosoft远程桌面RayLinkParallels Access 远程控制软件如何选择&#xff1f;1、功能性2、安全性3、易用性4、稳定性 未来展望与建议结语 前言 随着信息技术不断发展&…

setup 语法糖

只有vue3.2以上版本可以使用 优点&#xff1a; 更少的样板内容&#xff0c;更简洁的代码 能够使用纯 Typescript 声明props 和抛出事件 更好的运行时性能 更好的IDE类型推断性能 在sciprt标识上加上setup 顶层绑定都可以使用 不需要return &#xff0c;可以直接使用 使用组件…

java多线程-实现多线程(一)

目录 1.1 进程 1.2 线程 1.3 多线程的实现方式 ​编辑 方式1&#xff08;继承Thread类&#xff09; 1.1 进程 是正在运行的程序是系统进行资源分配和调用的独立单位每一个进程都有它自己的内存空间和系统资源 1.2 线程 线程是进程中的单个顺序控制流&#xff0c;是一条执…