WPF xaml 文件详解

复制代码
            <div id="content_views" class="htmledit_views">
                <h2><a name="t0"></a>1.总述</h2> 

创建好了WPF项目后,最重要的是对 App和MainWindow的理解,在一开始的时候,极容易就直接在MainWindow添加控件,开始创作,甚至会忽略App.xaml 的存在,但是,弄清楚他们之间的关系和区别,对于理解WPF项目是有极大帮助且至关重要的。

在 WPF 项目中,App.xamlApp.xaml.cs 以及 MainWindow.xamlMainWindow.xaml.cs 是非常重要的组成部分,它们共同定义了应用程序的入口点主窗口的行为。

程序入口点:App 主窗口行为:MainWindow

简单来说,整个项目全局的东西,和应用程序相关的,都涉及到App,而MainWindow甚至可以仅仅理解为一个程序上的UI控件而已;而之所以我们关掉了运行窗口,程序也随之结束了,是因为在App中做了相应的设置;我们可以实现让主窗口关闭而程序仍然继续,即MainWindow挂了而app还在(注:一些后台服务的原理就是基于此)

2. 具体描述

2.1. MainWindow.xaml:

主要涉及到窗口的的布局,控件属性的设置,数据的绑定(后续详细讲解)等等

  • MainWindow.xaml 是主窗口的 XAML 文件,它定义了窗口的 UI 布局和控件。
  • 文件中可以包含各种 WPF 控件,如按钮、文本框、列表框等,以及它们的布局。
  • 可以包含窗口级别的资源,如样式和数据绑定等。

细节解释:

创建的项目打开可以观察到,大致包括一堆网址一样的东西、布局标签grid 等等

  1. <Window> 标签定义了一个窗口。这是 WPF 中最基本的 UI 容器,可以包含其他控件和布局元素。但是需要注意, Window的内容只可以设置一次,所以我们需要添加的东西都会有Grid包着(或者用其它的布局控件如StackPanel都可以)

2.x**:Class="WPFStudy.MainWindow"**属性指定了与这个 XAML 文件关联的代码隐藏类(保持类的一致性很重要,详细见下) 。在这个例子中,它是 WPFStudy 命名空间下的 MainWindow 类。

强行运行的话,会编译不通过,报错提示如下:会找不到初始化方法

3. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"等一系列类似网址的的理解:

这些语句实际上是硬编码字符串,是用来引入命名空间的。当编译器看到这些,就会把一系列的名称空间给应映射进来。

简单理解为一组命名空间,然后取一个别名,下面在添加比如说button按钮的时候,其实就来自于上面某些命名空间。后台代码中需要引入一些命名空间,前台代码也同样如此,只是将将代码简化了,一组一组的添加进去。实现一个校验的功能。

4. mc:Ignorable="d" 属性告诉 XAML 解析器忽略 d 前缀,这意味着即使在不支持设计时特性的环境中,XAML 文件也可以正常加载。

Title="MainWindow" 设置了窗口的标题,这将显示在窗口的标题栏上,Height="450"Width="800" 设置了窗口的初始高度和宽度

2.2 MainWindow.xaml.cs:
  • MainWindow.xaml.cs 是与 MainWindow.xaml 配对的代码隐藏文件,它包含了主窗口的逻辑和事件处理程序。(xaml 前台代码 cs后台代码 ,后台代码就更接近C#语言,主要用于写业务逻辑和实现流程)
  • 在这个文件中,可以编写响应用户操作的代码,如按钮点击事件、文本框内容变化事件等,还可以用于控制窗口的行为和状态

补充说明:实际上,一个前台代码,一个后台代码,,它们编译生成的类都是Mainwindow这个类,这个类可以在两个地方进行编辑设置的原因:有partial关键字,,这个关键字允许在两个地方进行编辑,最后编译合并生成一个类。这也就是说为什么我们会有前台代码和后台代码这个说法

d

App.xaml 和 App.xaml.cs
2.3 App.xaml:
  • App.xaml 是一个 XAML 文件,它定义了应用程序级别的资源和应用程序启动时的初始窗口
  • 通常包含应用程序的全局资源,如样式、模板和数据模板,这些资源可以在应用程序的任何部分使用。
  • App.xaml 还定义了应用程序的启动窗口,即应用程序启动时首先显示的窗口。(相当重要,它是我们创建很多个窗口 (Mainwindow)实现不同启动的入口)
  • 包含应用程序的全局事件处理程序,如启动(Startup)、退出(Exit)、会话结束(SessionEnding)等。
  • 由此引申出对于初学着很友好的一个操作,每次学新的东西,不需要去新建一个项目,而是新建一个窗口MainWindow,将学习记录的代码粘贴保存,在APP.xaml中每次设置需要的启动窗口就可以,超级好用
2.4 App.xaml.cs:
  • App.xaml.cs 是与 App.xaml 配对的后台代码,它包含了应用程序的启动逻辑和应用程序级别的事件处理程序。
  • 在这个文件中,你可以重写 OnStartupOnExitOnSessionEnding 等方法来处理应用程序的启动和退出事件。包含了应用程序的全局属性的设置,如应用程序的标题、图标等。

参考视频 :https://www.bilibili.com/video/BV13D4y1u7XX?spm_id_from=333.788.videopod.episodes\&vd_source=2d0578bc27bdc3553296e35d0c76de2d\&p=3

相关推荐
明明明h2 小时前
C#网络编程(Socket编程)
开发语言·网络·c#
时光追逐者3 小时前
C#/.NET/.NET Core技术前沿周刊 | 第 33 期(2025年4.1-4.6)
c#·.net·.netcore
火一线5 小时前
【C#知识点详解】LinkedList<T>储存结构详解
游戏·c#
q567315237 小时前
C#编写HttpClient爬虫程序示例
开发语言·爬虫·python·c#
butterfly_onfly7 小时前
C# 多线程并发编程基础
数据结构·算法·c#
lljss202016 小时前
C# 从代码创建选型卡+表格
c#
weixin_3077791316 小时前
使用C#配置信息类的属性生成Snowflake CREATE STAGE语句
开发语言·数据仓库·hive·c#
唐青枫16 小时前
C# virtual 和 abstract 详解
c#·.net
闪电麦坤9521 小时前
C#:is关键字
开发语言·c#
BuHuaX1 天前
C#的反射机制
服务器·unity·c#·游戏引擎·游戏程序