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

相关推荐
一名用户3 小时前
unity实现梦日记式传送组件
后端·c#·unity3d
阿蒙Amon4 小时前
C#扩展方法全解析:给现有类型插上翅膀的魔法
开发语言·c#
qq_3923971214 小时前
Redis常用操作
数据库·redis·wpf
三千道应用题18 小时前
WPF学习笔记(25)MVVM框架与项目实例
wpf
江山如画,佳人北望18 小时前
C#程序入门
开发语言·windows·c#
与火星的孩子对话19 小时前
Unity进阶课程【六】Android、ios、Pad 终端设备打包局域网IP调试、USB调试、性能检测、控制台打印日志等、C#
android·unity·ios·c#·ip
future141219 小时前
C#每日学习日记
java·学习·c#
军训猫猫头1 天前
1.如何对多个控件进行高效的绑定 C#例子 WPF例子
开发语言·算法·c#·.net
厦门德仔1 天前
【WPF】WPF(样式)
android·java·wpf
葬歌倾城2 天前
JSON的缩进格式方式和紧凑格式方式
c#·json