WPF教程(二)--Application WPF程序启动方式

news2024/12/26 23:53:26

1.Application介绍

WPF与WinForm一样有一个 Application对象来进行一些全局的行为和操作,并且每个 Domain (应用程序域)中仅且只有一个 Application 实例存在。和 WinForm 不同的是WPF Application默认由两部分组成 : App.xaml 和 App.xaml.cs,这有点类似于 Asp.Net WebForm,将定义和行为代码相分离。
微软把WPF中经常使用的功能都封装在 Application 类中了。 Application 类具体有以下功能:

  1. 跟踪应用程序的生存期并与之交互。
  2. 检索和处理命令行参数。
  3. 检测和响应未经处理的异常。
  4. 共享应用程序范围的属性和资源。
  5. 管理独立应用程序中的窗口。
  6. 跟踪和管理导航。

2.WPF应用程序的启动方式

1.使用程序自身App.xaml文件定义启动WPF应用程序启动点

XAML从严格意义上说并不是一个纯粹的 XML 格式文件,它更像是一种 DSL(Domain Specific Language,领域特定语言),它的所有定义都会由编译器最后编译成代码。

App.xaml文件默认内容如下图:
这里写图片描述

 2、通过创建一个自定义类(类内定义Main方法--特性STAThread)来实现WPF程序启动:
第一步:去除原有App.xaml文件--如下图,在“解决方案资源管理器”中使用鼠标左键选中App.xaml文件,然后鼠标右键,弹出“弹出菜单—》从项目中排除”,这样就在项目中去掉了我们刚才建立的App.xaml文件。

这里写图片描述

第二步:现在中添加一个新类(WPF程序启动点),类名为App.cs。如下图。在“解决方案资源管理器”中使用鼠标左键选中“WpfApp1”项目,然后点击鼠标右键,弹出“弹出菜单”,按下图中所示操作。

这里写图片描述

 第三步:在弹出的“添加新项”界面中,选中“类”,把名称修改为“App.cs”。如下图。

这里写图片描述

 第四步:在“解决方案资源管理器”中双击App.cs(如下图),打开文件,然后可以分别写入以下三种方式的代码,进行启动效果的调试

这里写图片描述

 第一种启动应用程序的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows; 
namespace WpfApp1; 
{
    class App
    {
        [STAThread]
        static void Main()
        {
           // 定义Application对象作为整个应用程序入口  
            Application app = new Application();
            // 方法一:调用Run方法 ,这种方式跟winform的调用一样
            WindowGrid win = new WindowGrid();
            app.Run(win);
        }
    }
}

第二种启动应用程序的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;

namespace WpfApp1
{
    class App
    {
        [STAThread]
        static void Main()
        {
            // 定义Application对象作为整个应用程序入口  
            Application app = new Application();      
             //指定Application对象的MainWindow属性为启动窗体,然后调用无参数的Run方法  
            WindowGrid win = new WindowGrid();  
            app.MainWindow = win;
            //是必须的,否则无法显示窗体       
            win.Show();                    
            app.Run();  
        }
    }
}

第三种启动应用程序的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace WpfApp1
{
    class App
    {
        [STAThread]
        static void Main()
        {
            // 定义Application对象作为整个应用程序入口  
            Application app = new Application();
            // 通过Url的方式启动
            app.StartupUri = new Uri("WindowGrid.xaml", UriKind.Relative);
            app.Run();
        }
    }
}

以上三种方法都可以使WPF程序启动窗口运行成功

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

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

相关文章

SpringBoot单元测试断言 assertions

断言 断言(assertions)是测试方法中的核心部分,用来对测试需要满足的条件进行验证。这些断言方法都是 org.junit.jupiter.api.Assertions 的静态方法。JUnit 5 内置的断言可以分成如下几个类别: 1、简单断言 2、数组断言 通过 …

类型转换-空间配置器

文章目录 类型转换C语言的类型转换隐式类型转换:强制类型的转换:C类型转换缺点 C强制类型转换static_castreinterpret_castconst_castdynamic_cast explicit 空间配置器(STL专用内存池)SGI-STL空间配置器实现原理一级空间配置器二级空间配置器内存池SGI-…

stm32启动过程(以F1为例)

文章目录 STM32启动模式STM32启动过程(以内部flash启动为例)启动文件功能启动文件常用汇编指令及说明 STM32启动模式 M3/M4/M7等内核复位后,做的第一件事: 从地址 0x0000 0000 处取出 堆栈指针 MSP 的初始值,该值为栈…

接踵而至,昆仑万维天工大语言模型发布

目录 天工大语言模型对标GPT3.5对话能力多模态应用同行对比后言 天工大语言模型 国产ChatGPT再次迎来新成员,4月17日下午,昆仑万维正式发布千亿级大语言模型“天工”,同时宣布即日起启动邀请测试,并注册了chatgpt.cn作为域名。天…

认真复习c语言1

最近好好写总结了(不能在偷懒了):这一次绝对认真,写总结写了三个多小时,学了一个小时左右TAT; 今天来复习一下c语言的多文件操作: 经过我这几天的摸索,我算是明白了: …

Typora (windows/MacOs版) 你未曾见过的Markdown编辑器

简介 Typora的设计理念非常人性化,与传统编辑器相比,更注重用户的视觉效果和阅读体验。它的编辑界面非常简洁,用户可以就近编辑,随时查看效果,避免频繁地转换预览模式,提高了工作效率和灵活性。 此外&…

d2l解码编码器与seq2seq

seq2seq难死了,卡了好久,好不容易有些头绪了。。。 目录 1.编码器与解码器 1.1原理 1.2实现 2.seq2seq 2.1构造编码器 2.2构造解码器 repeat与cat探索 总结nn.rnn\GRU\LSTM输入输出 看一下解码器的输出 2.3损失计算 2.4训练 2.5预测 2.6预…

【C++】多态---上( 概念、条件及性质)

来前言: 我们之前提到过,C是一门面向对象的语言,它有三大特性——封装、继承、多态。 封装和继承我们已经详细学习过了,本章将进入多态的学习。 目录 (一)多态的概念 (二)多态的定…

Vector - CAPL - Panel面板_02

Button 功能:触发指定的操作 说明:Button 是一个控件,使用它可以触发指定的操作。 适用场景: 1、按下启动按钮会使电机启动。 2、启动锁定开关时,所有车门都会自动锁定。 3、启动TestModule测试模块、回放模块等 设…

单机部署MongoDB

文章目录 一、Windows 环境1.1 安装1.2 启动和连接1.3 Compass 图形化客户端 二、Linux 环境2.1 安装2.2 启动和连接 提示:以下是本篇文章正文内容,MongoDB 系列学习将会持续更新 一、Windows 环境 1.1 安装 ①下载安装包,官方下载地址&am…

OldWang带你了解MySQL(七)

文章目录🔥多表查询🔥SQL92标准中的查询🔥非等值连接🔥自连接🔥SQL99标准中的查询🔥SQL99中的自然连接(NATURAL JOIN)🔥SQL99中的内连接(INNER JOIN)🔥外连接查询(OUTER JOIN)&#…

行业那么多,为什么计算机领域这么火?

行业那么多,为什么计算机领域这么火?计算机领域火已经不是一天两天了,从开始的进入互联网时代、到“互联网”、再到大数据、人工智能时代、数字化经济……计算机技术从行业内部的自我发展逐渐渗透到各行各业,甚至成为社会整体经济…

NLP深度网络中self.embedding(x)词嵌入后降维方法

在自然语言处理中的循环神经网络中,经常使用torch定义类,self.embedding(x)中,x是输入,介绍self.embedding(x)返回结果,以及结果的形状,并解释这个形状 在自然语言处理中的循环神经网…

P4158 [SCOI2009]粉刷匠(分组背包问题+前缀和优化)

[TOC](P4158 [SCOI2009]粉刷匠(分组背包问题)) 一、问题 [SCOI2009]粉刷匠 题目描述 windy有 N 条木板需要被粉刷。 每条木板被分为 M 个格子。 每个格子要被刷成红色或蓝色。 windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜色。 …

Spring Cloud Gateway: 网关

文章目录 网关Hello world路由: Route谓词: Predicate过滤器: FilterGateway实现限流: RequestRateLimiter过滤器使用Gateway实现服务降级 自定义全局过滤器GateWay中执行流程 网关 API网关就是实现了前端项目和服务端项目之间的统一入口 Nginx实现的是用户和前端项目之间调用…

【Linux】环境变量相关笔记

文章目录 echo $PATHexport和环境变量相关的命令main(int argc,char* argv[],char *env[])三个参数介绍getenv()通过系统调用获取su与su - 的区别:exportsource 和 .优先级 echo $PATH 是用来查环境变量的 export 从下面的图片当中可以看到,的确是将文…

ubuntu 20.04设置开机自启动脚本

1 建立开机启动服务 在 路径下 /lib/systemd/system/rc-local.service 的 rc-local.service 的脚本,内容规定了 rc.local 的启动顺序和行为 这行代码规定了这个service在开机启动时所执行的命令是:/etc/rc.local start。即运行 /etc/rc.local 脚本。不过…

《面试1v1》HashMap

没有人比中国人更懂 HashMap 我是 javapub,一名 Markdown 程序员从👨‍💻,八股文种子选手。 面试官:HashMap 是Java程序员用得最频繁的集合之一,可以给我简单介绍一下它的内部实现机制吗? 候选人: Hash…

C++ -3- 类和对象 (中) | 拷贝构造函数 赋值运算符重载

文章目录 4.拷贝构造函数什么是拷贝构造函数?应用——示例:日期计算器什么情况下需要自己实现拷贝构造函数? 5.赋值运算符重载运算符重载(重要)赋值运算符重载 拷贝构造函数和赋值重载函数 4.拷贝构造函数 什么是拷贝…

Baumer工业相机堡盟工业相机如何联合BGAPI SDK和OpenCV实现Mono12和Mono16格式位深度的图像保存(C++)

Baumer工业相机堡盟工业相机如何联合BGAPI SDK和OpenCV实现Mono12和Mono16位深度的图像保存(C) Baumer工业相机Baumer工业相机保存位深度12/16位图像的技术背景代码案例分享1:引用合适的类文件2:BGAPI SDK在图像回调中联合OpenCV保…