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

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

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

相关文章

鸿蒙开发-ArkTS 创建自定义组件

在 ArkTS 中创建自定义组件是一个相对简单但功能强大的过程。以下是如何在 ArkTS 中创建和使用自定义组件的详细步骤&#xff1a; 一、定义自定义组件 使用Component注解&#xff1a;为了注册一个组件&#xff0c;使其能够在其他文件中被引用&#xff0c;你需要使用Component…

水表的数字表盘分割数据集labelme格式3023张13类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数)&#xff1a;3023 标注数量(json文件个数)&#xff1a;3023 标注类别数&#xff1a;13 标注类别名称:["readbox_1","center",&q…

跟着AI 学 AI, 开发一个ChatBot, 集成 Json 数据和查询

按照规律&#xff0c;使用AI生成一个架构图 直接上代码&#xff0c;为了方便学习&#xff0c;直接按照如下方式&#xff0c;复制到你的开发环境即可调试&#xff0c;运行代码。做学习参考。 代码注释多次说明这里&#xff0c;不在赘述。 "type": "carousel&qu…

使用枚举实现单例模式,不会反序列化破坏攻击,不会被反射破坏攻击。(附带枚举单例的简单实现)

原因分析 1.反序列化方法 ① jdk8中的Enum源码中对反序列化方法进行重写&#xff0c;抛出异常。 java.lang.Enum#readObject方法截图如下 ②java.io.ObjectInputStream#readObject 方法中的 readEnum 方法处理了枚举类型的反序列化&#xff0c;从而确保了枚举的单例特性。 …

MongoDB-副本集

一、什么是 MongoDB 副本集&#xff1f; 1.副本集的定义 MongoDB 的副本集&#xff08;Replica Set&#xff09;是一组 MongoDB 服务器实例&#xff0c;它们存储同一数据集的副本&#xff0c;确保数据的高可用性和可靠性。副本集中的每个节点都有相同的数据副本&#xff0c;但…

《数据结构》(408代码题)

2009 单链表&#xff08;双指针&#xff09; 分析&#xff1a;首先呢&#xff0c;给我们的数据结构是一个带有表头结点的单链表&#xff0c;也不允许我们改变链表的结构。链表的长度不是直接给出的啊&#xff0c;所以这个倒数也很棘手。那我们该如何解决这个“k”呢&#xff0c…

6.1 初探MapReduce

MapReduce是一种分布式计算框架&#xff0c;用于处理大规模数据集。其核心思想是“分而治之”&#xff0c;通过Map阶段将任务分解为多个简单任务并行处理&#xff0c;然后在Reduce阶段汇总结果。MapReduce编程模型包括Map和Reduce两个阶段&#xff0c;数据来源和结果存储通常在…

Cad c#.net 一键修改标注dimension中的文本内容

本例为给标注加前缀&#xff0c;也可定制其他形式&#xff0c;效果如下&#xff1a; public class Demo{[CommandMethod("xx")]//public void Dim(){Document doc Application.DocumentManager.MdiActiveDocument;Database db doc.Database;Editor ed doc.Editor;…

旅游系统旅游小程序PHP+Uniapp

旅游门票预订系统&#xff0c;支持景点门票、导游产品便捷预订、美食打卡、景点分享、旅游笔记分享等综合系统 更新日志 V1.3.0 1、修复富文本标签 2、新增景点入驻【高级版本】3、新增门票核销【高级版】4、新增门票端口【高级版】

MacOS系统 快速安装appium 步骤详解

在macOS系统上&#xff0c;你可以通过使用nvm&#xff08;Node Version Manager&#xff09;来管理Node.js的版本&#xff0c;并基于nvm安装的Node.js环境来快捷地安装Appium。以下是具体步骤&#xff1a; 一、安装nvm 下载nvm 访问nvm的GitHub仓库&#xff08;nvm GitHub&…

技术速递|.NET 9 简介

作者&#xff1a;.NET 团队 排版&#xff1a;Alan Wang 今天&#xff0c;我们非常激动地宣布 .NET 9的发布&#xff0c;这是迄今为止最高效、最现代、最安全、最智能、性能最高的 .NET 版本。这是来自世界各地数千名开发人员又一年努力的成果。这个新版本包括数千项性能、安全和…

Vue项目打包部署到服务器

1. Vue项目打包部署到服务器 1.1. 配置 &#xff08;1&#xff09;修改package.json文件同级目录下的vue.config.js文件。 // vue.config.js module.exports {publicPath: ./, }&#xff08;2&#xff09;检查router下的index.js文件下配置的mode模式。   检查如果模式改…

NPU是什么?电脑NPU和CPU、GPU区别介绍

随着人工智能技术的飞速发展&#xff0c;计算机硬件架构也在不断演进以适应日益复杂的AI应用场景。其中&#xff0c;NPU&#xff08;Neural Processing Unit&#xff0c;神经网络处理器&#xff09;作为一种专为深度学习和神经网络运算设计的新型处理器&#xff0c;正逐渐崭露头…

使用skywalking,grafana实现从请求跟踪、 指标收集和日志记录的完整信息记录

Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的开源项目&#xff0c; 2017年12月SkyWalking成为Apache国内首个个人孵化项目&#xff0c; 2019年4月17日SkyWalking从Apache基金会的孵化器毕业成为顶级项目&#xff0c; 目前SkyWalking支持Java、 .Net、 Node.js、…

纯CSS实现文本或表格特效(连续滚动与首尾相连)

纯CSS实现文本连续向左滚动首尾相连 1.效果图&#xff1a; 2.实现代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, init…

【LeetCode刷题之路】622.设计循环队列

LeetCode刷题记录 &#x1f310; 我的博客主页&#xff1a;iiiiiankor&#x1f3af; 如果你觉得我的内容对你有帮助&#xff0c;不妨点个赞&#x1f44d;、留个评论✍&#xff0c;或者收藏⭐&#xff0c;让我们一起进步&#xff01;&#x1f4dd; 专栏系列&#xff1a;LeetCode…

Node.js基础入门

1.Node.js 简介 Node 是一个让 JavaScript (独立)运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。 发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。 简单的说 Node.js 就是运行在服务端的…

#思科模拟器通过服务配置保障无线网络安全Radius

演示拓扑图&#xff1a; 搭建拓扑时要注意&#xff1a; 只能连接它的Ethernet接口&#xff0c;不然会不通 MAC地址绑定 要求 &#xff1a;通过配置MAC地址过滤禁止非内部员工连接WiFi 打开无线路由器GUI界面&#xff0c;点开下图页面&#xff0c;配置路由器无线网络MAC地址过…

Qt-chart 画折线图(以时间为x轴)

上图 代码 #include <iostream> #include <random> #include <qcategoryaxis.h>void MainWindow::testLine() {//1、创建图表视图QChartView* view new QChartView(this);//2.创建图表QChart* chart new QChart();//3.将图表设置给图表视图view->setCh…

up主亲测,ToDesk/青椒云/顺网云这三款云电脑玩转AIGC场景

文章目录 1. 前言2. 云电脑性能分析3. 基础硬件数据3.1 硬件配置3.2 AI 评测跑分 4. 云电脑 AIGC 上手实测4.1 ToDesk4.1.1 AIGC 技术集成情况4.1.2 界面及功能4.1.3 项目部署4.1.4 黑神话悟空 AI 换脸4.1.6 AIGC 文生图体验 4.2 青椒云4.2.1 AIGC 技术集成情况4.2.2 界面及功能…