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

这篇具有很好参考价值的文章主要介绍了【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 类封装:

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

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

【WPF.NET开发】WPF中的窗口,WPF.NET 专栏,wpf,.net,c#,windows

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

窗口的非工作区由 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 标记文件文章来源地址https://www.toymoban.com/news/detail-756442.html

到了这里,关于【WPF.NET开发】WPF中的窗口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【WPF.NET开发】预览事件

    先决条件 预览标记为“已处理”的事件 通过控件解决事件禁止问题 预览事件,也称为隧道事件,是从应用程序根元素向下遍历元素树到引发事件的元素的路由事件。 引发事件的元素在事件数据中报告为Source 。 并非所有事件场景都支持或需要预览事件。 本文介绍了预览事件

    2024年02月03日
    浏览(40)
  • 【WPF.NET开发】流文档

    什么是流文档? 流文档类型 创建流内容 与流相关的类 内容架构 自定义文本 流文档旨在优化查看和可读性。 流文档根据运行时变量(例如,窗口大小、设备分辨率和可选的用户首选项)来动态调整和重新排列内容,而不是设置为一个预定义的布局。 此外,流文档还提供一

    2024年01月17日
    浏览(30)
  • 【WPF.NET开发】OpenType字体

    OpenType 字体格式 变量 大写字母 连字 花体 备用项 数字样式 版式类 本主题概述了 Windows Presentation Foundation (WPF) 中 OpenType 字体技术的一些主要功能。 OpenType 字体格式是 TrueType® 字体格式的扩展,增加了对 PostScript 字体数据的支持。 OpenType 字体格式由 Microsoft 和 Adobe Corporatio

    2024年01月16日
    浏览(32)
  • 【WPF.NET开发】弱事件模式

    先决条件 为什么要实现弱事件模式? 应该由谁实现弱事件模式? 如何实现弱事件模式 在应用程序中,附加到事件源的处理程序可能不会与将处理程序附加到源的侦听器对象一同销毁。 这种情况下会导致内存泄漏。 Windows Presentation Foundation (WPF) 引入了可用于解决此问题的设

    2024年02月03日
    浏览(32)
  • .NET 8 中的 WPF File Dialog 改进

    作者:Dipesh Kumar 排版:Alan Wang 我们很高兴宣布从 .NET 8 Preview 7 开始,对 WPF 中的通用文件对话框 API 进行了一系列新的改进。其中包括迄今为止存储库中投票最多的 API 建议 – 允许用户选择文件夹的 OpenFolderDialog 控件 – 以及文件对话框上支持新的用户场景的几个新属性,例

    2024年02月07日
    浏览(33)
  • VisualStudio[WPF/.NET]基于CommunityToolkit.Mvvm架构开发

    项目模板选择如下: 暂时随机填一个目标框架,待会改: 双击“解决方案资源管理器”中项目CU-APP, 打开项目工程文件CU-APP.csproj, 修改目标框架 TargetFramework 为.net framework 4.7.2 ;  C#语言版本 LangVersion 为  9.0  \\\"工具\\\" - \\\"NuGet包管理器\\\",“管理解决方案的NuGet程序包(N)”,  或者,

    2024年02月07日
    浏览(29)
  • .NET6: 开发基于WPF的摩登三维工业软件 (7)

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 做为一个摩登的工业软件,提供可编程的脚本能力是必不可少的能力。脚本既可以方便用户进行二次开发,也对方便对程序进行自动化测试。本文将结合

    2024年02月05日
    浏览(33)
  • 使用.net 6.0框架的WPF应用如何引用System.Windows.Forms这个dll

    在.net 6.0的WPF应用中,想使用OpenFileDialog 这个类或者FolderBrowserDialog这个类,是无法找到System.Windows.Forms这个dll引用的,即使从系统C盘里搜索到System.Windows.Forms.dll放到项目里,也会出现异常,而无法识别WPF自带的一些初始化方法。 OpenFileDialog还好,因为他有两个命名空间都有它

    2024年02月12日
    浏览(25)
  • .net wpf程序 移花接木

    最近在研究C# .net桌面程序。非常有趣 软件是国外作者写的 公司要求修改翻译 从最初的开源变成闭源再到加壳. 一路让我这个小小的职员好蛋疼. 软件是VS2015 C# WPF 程序 在不脱壳的情况下 实现挂钩类托管函数 遍历WPF控件汉化 首先通过各种手段脱壳目标程序,哪怕是不能运行

    2024年02月07日
    浏览(28)
  • WPF .NET 7.0学习整理(一)

    参照文档进行不系统的整理,看到那写到那O.o DependencyProperty:使用专有字段支持属性的标准模式的替代方法。 DependencyObject:定义了可以注册和拥有依赖属性的基类。 属性及其支持性 DependencyProperty 字段的命名约定非常重要。 字段总是与属性同名,但其后面追加了 Property 后

    2024年02月09日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包