当前位置: 首页 > news >正文

【上位机——WPF】App.xml和Application类简介

App.xml和Application类简介

  • 概述
    • App.xaml
    • App.xaml.cs
  • 入门代码
    • App.xaml
    • MainWindow.xml
  • Application生命周期
  • 窗体的声明周期

概述

xaml类型的文件包含两部分,一部分以.xaml扩展名结尾的前端代码,另一部分以.xaml.cs结尾的后端代码,通常我们也把后端代码称为隐藏代码。

App.xaml

<Application x:Class="WpfDemo1.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:WpfDemo1"StartupUri="MainWindow.xaml"><Application.Resources><!--这里编写一些资源 通用样式--></Application.Resources>
</Application>

x:Class=“WpfDemo1.App” :指的是App.xaml.cs文件中的App类
xmlns:local=“clr-namespace:WpfDemo1” :指的是本地的命名空间(也是项目名)
StartupUri=“MainWindow.xaml”:指定程序要启动的窗口

App.xaml.cs


using System.Configuration;
using System.Data;
using System.Windows;namespace WpfDemo1
{/// <summary>/// Interaction logic for App.xaml/// </summary>public partial class App : Application{}}Application:继承了所有控件的祖先

入门代码

App.xaml

<Application x:Class="WpfDemo1.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:WpfDemo1"StartupUri="MainWindow.xaml"><Application.Resources><ResourceDictionary><!--定义Button按钮前景色为红色--><Style TargetType="Button" x:Key="ButtonStyle"><Setter Property="Foreground" Value="Red"></Setter></Style></ResourceDictionary></Application.Resources>
</Application>

MainWindow.xml

<Window x:Class="WpfDemo1.MainWindow"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:WpfDemo1"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Grid><!--Style 加载的是App.xaml文件中的Style标签 key为ButtonStyle的样式--><Button Content="Hello world" Width="200" Height="40"  Style="{StaticResource ButtonStyle}"></Button></Grid>
</Window>

Application生命周期

using System.Configuration;
using System.Data;
using System.Windows;namespace WpfDemo1
{/// <summary>/// Interaction logic for App.xaml/// </summary>public partial class App : Application{/// <summary>/// 应用程序启动时,做一些初始化的工作/// </summary>/// <param name="e"></param>protected override void OnStartup(StartupEventArgs e){base.OnStartup(e);}/// <summary>/// 当应用程序结束时/// </summary>/// <param name="e"></param>protected override void OnExit(ExitEventArgs e){base.OnExit(e);}/// <summary>/// 当应用程序被激活时/// </summary>/// <param name="e"></param>protected override void OnActivated(EventArgs e){base.OnActivated(e);}/// <summary>/// 当应用程序处于非激活状态/// </summary>/// <param name="e"></param>protected override void OnDeactivated(EventArgs e){base.OnDeactivated(e);}}}

窗体的声明周期

using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;namespace WpfDemo1
{/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();//创建窗体源时引发此事件 比load还要提前this.SourceInitialized += (o, e) => {Console.WriteLine("SourceInitialized");};//窗体加载时引发此事件this.Loaded += (o, e) => {Console.WriteLine("Loaded");};//窗体被激活引发此事件this.Activated += (o, e) => {Console.WriteLine("Activated");};//窗体非激活引发此事件this.Deactivated += (o, e) => {Console.WriteLine("Deactivated");};//释放资源引发此事件this.Unloaded += (o, e) => { Console.WriteLine("Unloaded"); };this.Closing += (o, e) => { Console.WriteLine("Closing"); };this.Closed += (o, e) => { Console.WriteLine("Closed"); };//渲染页面this.ContentRendered += (o, e) => { Console.WriteLine("ContentRendered"); };//等同于//this.ContentRendered += OnContentRendered;}private void OnContentRendered(object sender,EventArgs e) {Console.WriteLine("ContentRendered");}}
}
http://www.xdnf.cn/news/467659.html

相关文章:

  • 【OpenGL学习】(一)创建窗口
  • 不建议在useEffect中进行数据获取的理由
  • 以项目的方式学QT开发(一)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!
  • 【中级软件设计师】网络攻击(附软考真题)
  • cmake 指定安装路径
  • 街景主观感知全流程(自建数据集+两两对比程序+Trueskill计算评分代码+训练模型+大规模预测)11
  • Excel导入日期变数字,数据库入库异常的排查与修复过程
  • 【iOS】alloc的实际流程
  • 【办公类-100-01】20250515手机导出教学照片,自动上传csdn+最大化、最小化Vs界面
  • AD PCB板logo及二维码放置
  • Linux基础 -- 在内存中使用chroot修复eMMC
  • 非加密散列算法的应用-MurmurHash
  • 【Java】Spring IoC中的相关注解
  • 关于mysql分区键
  • Web GIS可视化地图框架Leaflet、OpenLayers、Mapbox、Cesium、ArcGis for JavaScript
  • 5.15本日总结
  • docker 命令操作大全
  • 【Matlab】最新版2025a发布,深色模式、Copilot编程助手上线!
  • redis中key的过期和淘汰
  • PDA手持终端应用有哪些?
  • Python生成器:高效处理大数据的秘密武器
  • YOLO11解决方案之距离计算探索
  • RHCE实验:通过脚本判断用户是否存在
  • 与entity物体的交互
  • 提升MySQL运维效率的AI利器:NineData深度评测与使用指南
  • 网页渲染的两条赛道
  • 语音识别——语音转文字
  • 20250515通过以太网让VLC拉取视熙科技的机芯的rtsp视频流的步骤
  • Spring Boot 拦截器:解锁5大实用场景
  • QImage高效率像素操作的方法