【WPF.NET开发】WPF中的窗口

目录

1、窗口类

2、实现窗口

2.1 为 MSBuild 配置窗口

3、窗口生存期

3.1 打开窗口

3.2 窗口激活

3.3 关闭窗口

3.4 窗口生存期事件

4、窗口位置

4.1 最顶层窗口和 z 顺序

5、窗口大小

6、大小调整属性的优先级顺序

7、窗口状态

8、窗口外观

8.1 重设大小模式

8.2 Window style

8.3 任务栏显示

9、其他类型的窗口


用户通过窗口与 Windows Presentation Foundation (WPF) 应用程序交互。 窗口的主要用途是托管使数据可视化并使用户能够与数据交互的内容。 WPF 应用程序使用 Window
 类提供自己的窗口。 本文先介绍 
Window,然后讲述在应用程序中创建和管理窗口的基础知识。

本文使用从 C# 项目生成的 XAML。 如果使用 Visual Basic,则 XAML 看上去可能有不同。 这些差异通常出现在 x:Class 属性值上。 C# 包括项目的根命名空间,而 Visual Basic 不包括。

C# 的项目模板创建了一个 App 类型,包含在 app.xaml 文件中。 在 Visual Basic 中,该类型名为 Application,该文件名为 Application.xaml

1、窗口类

在 WPF 中,窗口由用于执行以下操作的 
Window 类封装:

  • 显示窗口。
  • 配置窗口的大小、位置和外观。
  • 托管特定于应用程序的内容。
  • 管理窗口的生存期。

下图展示了窗口的构成部分:

window-parts.png?view=netdesktop-8.0

窗口分为两个区域:非工作区和工作区。

窗口的非工作区由 WPF实现,它包括大多数窗口所共有的窗口部分,包括:

  • 标题栏 (1-5)。
  • 图标 (1)。
  • 标题 (2)。
  • 最小化 (3)、最大化 (4) 和关闭 (5) 按钮。
  • 包含菜单项的系统菜单 (6)。 单击图标 (1) 时出现。
  • 边框 (7)。

窗口的工作区是窗口的非工作区内部的区域,由开发人员用于添加特定于应用程序的内容,例如菜单栏、工具栏和控件。

  • 工作区 (8)。
  • 大小调整手柄 (9)。 这是添加到工作区 (8) 的控件。

2、实现窗口

典型窗口的实现既包括外观又包括行为,外观定义用户看到的窗口的样子,行为定义用户与之交互时窗口的运行方式。 在 WPF 中,可以使用代码或 XAML 标记实现窗口的外观和行为。

但在一般情况下,窗口的外观使用 XAML 标记实现,行为使用代码隐藏实现,如以下示例所示。

<Window x:Class="WindowsOverview.Window1"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"xmlns:local="clr-namespace:WindowsOverview"><!-- Client area containing the content of the window --></Window>

下面的代码是 XAML 的代码隐藏。

using System.Windows;namespace WindowsOverview
{public partial class Window1 : Window{public Window1(){InitializeComponent();}}
}

若要使 XAML 标记文件和代码隐藏文件配合工作,需要满足以下要求:

  • 在标记中,Window 元素必须包含 x:Class 属性。 生成应用程序时,标记文件中存在 x:Class 会使 Microsoft 生成引擎 (MSBuild) 生成派生自 
    Window 的 partial 类,其名称由 x:Class 属性指定。 这要求为 XAML 架构 (xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml") 添加 XAML 命名空间声明。 生成的 partial 类实现 InitializeComponent 方法,注册事件和设置在标记中实现的属性时将调用此方法。

  • 在代码隐藏中,类必须是 partial 类、名称必须是标记中 x:Class 属性指定的相同名称,并且它必须派生自 
    Window。 这样,代码隐藏文件就与应用程序生成时为标记文件生成的 partial 类相关联。

  • 在代码隐藏中,
    Window 类必须实现调用 InitializeComponent 方法的构造函数。 InitializeComponent 由标记文件已生成的 partial 类实现,用以注册事件并设置标记中定义的属性。

使用 Visual Studio 将新的 Window
 添加到项目时,
Window 通过同时使用标记和代码隐藏实现,并且包括必要的配置来创建此处所述的标记文件和代码隐藏文件之间的关联。

进行了此配置后,可以专注于在 XAML 标记中定义窗口的外观,并可在代码隐藏中实现窗口的行为。 以下示例显示了一个窗口,该窗口中的一个按钮定义了 
Click 事件的事件处理程序。 这是在 XAML 中实现的,处理程序是在代码隐藏中实现的。

<Window x:Class="WindowsOverview.Window1"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"xmlns:local="clr-namespace:WindowsOverview"><!-- Client area containing the content of the window --><Button Click="Button_Click">Click This Button</Button></Window>

下面的代码是 XAML 的代码隐藏。

using System.Windows;namespace WindowsOverview
{public partial class Window1 : Window{public Window1(){InitializeComponent();}private void Button_Click(object sender, RoutedEventArgs e){MessageBox.Show("Button was clicked.");}}
}

2.1 为 MSBuild 配置窗口

实现窗口的方式决定为 MSBuild 配置窗口的方式。 对于使用 XAML 标记和代码隐藏定义的窗口:

  • XAML 标记文件配置为 MSBuild Page 项。
  • 代码隐藏文件配置为 MSBuild Compile 项。

.NET SDK 项目会自动导入正确的 Page 和 Compile 项,无需对其进行声明。 如果为 WPF 配置了项目,则会将 XAML 标记文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/265383.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#泛型(详解)

前言 介绍C# 入门经典第8版书中的第12章《泛型》 一、泛型的含义 为引出泛型的概念&#xff0c;我们先来看看我们前面提到的 集合类https://blog.csdn.net/qq_71897293/article/details/134684612?spm1001.2014.3001.5501 这些集合是没有具体类型化的&#xff0c;所以…

dockerfile:创建镜像的方式,船舰自定义的镜像

dockerfile&#xff1a;创建镜像的方式&#xff0c;船舰自定义的镜像 包括配置文件&#xff0c;挂载点&#xff0c;对外暴露的端口&#xff0c;设置环境变量 docker创建镜像的方式 1、基于已有镜像进行创建。 根据官方提供的镜像源&#xff0c;创建镜像&#xff0c;然后拉起…

安装Nacos2.2.3集群

目录 一、传统方式安装 二、Docker安装 一、传统方式安装 1、配置jdk环境 vi /etc/profile JAVA_HOME/usr/local/java JRE_HOME/usr/local/java/jre CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib PATH$JAVA_HOME/bin:$PATH export PATH JAVA_…

Vue3: 给表格多个字段添加排序功能

问题 在Vue3项目中&#xff0c;使用element-plus的表格组件绘制表格后&#xff0c;需要令表格的多个字段可以进行选择排序&#xff08;选择升序或者降序&#xff09;但是排序功能好像有时候会出错&#xff0c;需要排序的字段多了之后&#xff0c;排序功能有时候会不起作用 解…

酷滴科技出席浦发银行第七届国际金融科技创新大赛

12月7日&#xff0c;浦发银行全球金融科技创新大赛在上海展开决赛。本届大会以“科技金融&#xff0c;激发创新力量”为主题&#xff0c;聚焦金融行业数字化转型过程中的痛点与难点&#xff0c;旨在探讨新时代下金融科技的新角色、新机遇以及新挑战。酷滴科技CEO张沈分享了酷滴…

7+共病+PPI分析+转录调控,纯生信靠这个思路也能拿7+

今天给同学们分享一篇生信文章“Exploring the Pathogenesis of Psoriasis Complicated With Atherosclerosis via Microarray Data Analysis”&#xff0c;这篇文章发表在Front Immunol期刊上&#xff0c;影响因子为7.3。 结果解读&#xff1a; 差异表达基因的鉴定 该研究的…

selenium库的使用

来都来了给我点个赞收藏一下再走呗&#x1f339;&#x1f339;&#x1f339;&#x1f339;&#x1f339; 目录 一、下载需要用到的python库selenium 二、selenium的基本使用 1.在python代码引入库 2.打开浏览器 3.元素定位 1&#xff09;通过id定位 2&#xff09;通过标…

centos 7 卸载图形化界面步骤记录

centos7 服务器操作系统&#xff0c;挺小一配置&#xff0c;装了图形化界面&#xff0c;现在运行程序的时候跑不动了&#xff0c;我想这图形界面也没啥用&#xff0c;卸载了算了&#xff01; 卸载步骤 yum grouplist 查询已经安装的组件 可以看到 图形化界面 等是以分组存在的…

docker Compose-网络设置

目录 一、概述 二、容器网络模型(了解) CNM主要有三部分组成 CNM驱动接口 Docker内置网络驱动 三、Docker Compose-网络设置二 一、概述 二、使用 links 三、自定义网络 四、配置默认网络 五、已存在的网络 一、概述 随着微服务的事件&#xff0c;应用的越来越多&a…

详解http请求头,响应头以及在实际开发中

HTTP (Hypertext Transfer Protocol) 协议是一种用于传输超文本的标准协议&#xff0c;它是 Web 通信的基础。HTTP 协议是无状态的&#xff0c;即每次请求是相互独立的&#xff0c;服务器不会记住上一次请求的信息。HTTP 协议采用客户端-服务器模式&#xff0c;客户端发起请求&…

深入探讨JavaScript高阶编程技巧:突破技能瓶颈的高级实践

大家有关于JavaScript知识点不知道可以去 &#x1f389;博客主页&#xff1a;阿猫的故乡 &#x1f389;系列专栏&#xff1a;JavaScript专题栏 &#x1f389;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 目录 学习目标&#xff1a; 学习内容&#xff1a…

ABeam Recruiting | ABeam旗下德硕管理咨询(深圳)最新社招岗位信息

ABeam Recruiting 职等你来 POSITION 招聘岗位 1 SAP项目经理 &#xff08;FICO/PP/MM/SD模块背景&#xff09; 职责描述 1.PD&Management&#xff1a;负责项目PD和落地实施管理 2.Business&#xff1a;熟悉了解业务需求、判断并合理地将业务需求转化成信息技术需求…