欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > WPF xaml 文件详解

WPF xaml 文件详解

2024/12/22 0:04:40 来源:https://blog.csdn.net/qq_38960013/article/details/144419062  浏览:    关键词: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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com