(二)WPF - 应用程序

2023/11/29 10:55:05

一、运行程序的过程:

  • (1) Application 对象被构造出来。
  • (2)Run方法被调用。
  • (3)Application.Startup 事件被触发
  • (4)用户代码构造一个或多个 Window 对象。
  • (5)Application.Shutdow 方法被调用。
  • (6)Application.Exit 事件被触发。
  • (7)Run 方法完成执行。

初始化应用程序有两种方法

从 Application 对象的构造器中初始化应用程序,或者处理 Startup 事件通常更好,因为 Application 在这里才完成它的内部初始化(例如,Application.Current 不会在构造器中进行设置)。

二、错误处理

针对无法恢复的异常问题

StackOverflowException:堆栈溢出大部分是由于代码进入的是死循环。

OutofMemoryException:当系统运行于低内存的时候,如此少的可用资源以至于 CLR 都不能多分配一个字节了。在这样的情况下,没有任何代码能被即时编译,没有任何变量能被装箱,也没有任何对象能被分配。

ThreadAbortException:线程只有当应用程序代码调用 Thread.Abort 时才会终止,所以如果不调用 Thread.Abort,甚至都不会看到 ThreadAbortException 出现。

DispartcherUnhandledException
当无法使用任何代码来处理异常时,处理冒泡到应用程序上的异常;

<!--MyApp.xaml-->  
<Application ... DispatcherUnhandledException='Failure' />  
        //MyApp.xaml.cs  
        void Failure(object sender,DispatcheUnhandledExceptionEventArgs e){  
    // your custom logic  
}  
public class DispatcheUnhandledExceptionEventArgs  
        :DispatcherEventArgs{  
 public Wxception Excetion {get;}  
 public bool Handled {get;set;};  
}

三、窗口

窗口的生命周期的主要阶段:

  • (1)Window.Initalized 事件被触发;
  • (2)Window.Actived 事件被触发;
  • (3)Window.Loaded 事件被触发;
  • (4)Window.ContentRendered 事件被触发;
  • (5)Window.CotentRendered 事件被触发;
  • (6)用户和窗口进行交互;
  • (7)Window.Closing 事件被触发;
  • (8)Window.Unloaded 事件被触发;
  • (9)Window.Closed 事件被触发;

四、导航和页面

三个概念:导航宿主、导航内容、日志(负责跟踪应用程序的导航动作)

请添加图片描述

导航宿主:NavigationWindow 是WPF 中默认的导航宿主。NavigationWindow 继承自 Window 并添加了一个默认的导航 UI(回退按钮等)。以及一些实现导航的必需基础功能。NavigationWindow 可以如 Window 那样访问所有应用程序级的特性。利用 NavigationWindow,可以实现 SDI 导航窗口模型。它能托管导航内容;
导航内容:如数据对象,如字符串这样的基本类型或页面。

public class NavExample: NavigationWindow{  
 public NavExample(){  
     Mavigate(new Page1());//导航内容  
 }     
}

public class Page1:Page{  
public Page1(){  
        TextBlock block = new TextBlock();  
        Hyperlink link = new Hyperlink();  
        link.Click += LinkClicked;  
        link.Inlines.Add("Click for page 2");  
        block.Inlines.Add(link);  
        Content = block;  
        WindowTitle = "Page 1";  
    }  
    void LinkClicked(object sender,RoutedEventArgs e){  
        NavigationService.Navigate(new Page2());  
    }  
}

NavigationService 对象提供了宿主独立的导航操作的访问能力。NavigationService 将能正常处理导航操作,而不管页面是被托管在浏览器中还是在 NavigationWindow 中;

日志: 跟踪所有东西。

备注:
历史(History): 所访问站点的一个固定列表,是一种以时间为基础的自动书签列表;
日志(Journal): 在当前会话中所访问站点的列表。

使用xaml实现导航

<!--page1.xaml-->
<page WindowTitle ='Page 1'>
<TextBlock>
<Hyperlink NavigateUri='page2.xaml'>
Click for page 2
</Hyperlink>
</TextBlock>
</page>

<!--page2.xaml-->
<Page WindowTitle='Page 2'>
</page>

<!--navexample.xaml-->

<NavigationWindow x:Class='EssentialWPF.NavExample' Source='page1.xaml'>

</NavigationWindow>

NavigationWindow 的 Source 属性能被设置为第一个页面的 URI 名称(Page1.xaml),这样

启动页面

<!--app.xaml-->
<Application x:Class='EssentialWPF.App' StartupUri='page1.xaml'>
</Application>

在页面之间传递状态

在HTML中,通过在服务器上保存状态来传递数据,或者利用客户端的 Cookie 来完成数据传递。在 WPF 中传递数据的一个简单的方式就是利用 Application 的 Properties 字典。


http://www.jnnr.cn/a/554090.html

相关文章

【瑞萨RA_FSP】IWDT——独立看门狗定时器

文章目录 一、IWDT简介二、IWDT功能框图剖析1. IWDT 时钟源(1) 计数器时钟(2) 独立看门狗超时时间计算 2. IWDT 模块电路功能讲解3. 独立看门狗&#xff08;IWDT&#xff09;与看门狗&#xff08;WDT&#xff09;功能对比4. 怎么使用IWDT 三、IWDT实验1. 硬件设计2. 文件结构3.…

Linux网络-网络层IP协议

目录 IP协议 计算机网络分层 IP协议头格式 IP数据报 - 数据分片 数据报为什么要分片&#xff1f; 数据报分片是什么&#xff1f; 如何做到IP数据报分片&#xff1f; 分片demo示例 并不推荐分片&#xff0c;能不分片则不分片。 网段划分 前置了解 网络号和主机号 为…

CTF-Show密码学【Base64、栅栏密码、16进制】

题目内容 密文&#xff1a;53316C6B5A6A42684D3256695A44566A4E47526A4D5459774C5556375A6D49324D32566C4D4449354F4749345A6A526B4F48303D 提交格式&#xff1a;KEY{XXXXXXXXXXXXXX}工具下载&#xff1a;https://www.lanzoui.com/i9fn2aj萌新_密码13 分析和解决过程 初步分析…

C# 静态构造函数学习

静态构造函数用于初始化类中的静态数据或执行仅需一次的特定操作&#xff0c;静态构造函数将在创建第一个实例或引用类中的静态成员之前自动调用。 静态构造函数具有以下特点&#xff1a; 静态构造函数不使用访问权限修饰符修饰或不具有参数&#xff1b; 类或结构体中…

0002Java程序设计-SSM协同过滤算法的新闻推荐系统

摘 要 “互联网”的战略实施后&#xff0c;很多行业的信息化水平都有了很大的提升。但是目前很多行业的管理仍是通过人工管理的方式进行&#xff0c;需要在各个岗位投入大量的人力进行很多重复性工作&#xff0c;使得对人力物力造成诸多浪费&#xff0c;工作效率不高等情况&am…

【裸机开发】认识中断向量表(设置中断向量偏移的原因)

之前的LED驱动不存在中断&#xff0c;也就不包含中断的初始化。如果程序包含了中断&#xff0c;我们应还需要初始化哪些内容&#xff1f;要解决这个问题&#xff0c;我们需要先了解一个中断系统包含了哪些内容。 ① 中断向量表&#xff1a;描述中断对应的中断服务函数&#xf…

如何设计一个高效的分布式日志服务平台

作者 | 百度智能小程序团队 导读 本文首先介绍了分布式服务下日志服务建设的挑战&#xff0c;然后介绍了下业内ELK的通用解决方案及与天眼日志服务的差异性&#xff0c;接下来详细介绍了天眼日志服务平台的整体架构&#xff0c;如何做采集、传输、检索、隔离、清理等机制的&…

Mac5款高效实用软件,值得推荐

目录 1.MarginNote 3&#xff1a;阅读批注学习笔记软件 2.iShot&#xff1a;Mac截图、长截图、带壳截图、贴图、标注、取色、录屏、录音、OCR、翻译&#xff0c;合集工具 3.KeyCastr-实时显示按下的按键 4.MindNode-超美观的思维导图 5.One Switch&#xff1a;系统设置一键…

磁盘调度算法(期末复习版)

文章目录 一. FCFS 调度(先来先服务)二.SSTF调度(最短寻道时间优先)三. SCAN 调度(电梯算法)四. C-SCAN 调度(循环扫描)五. LOOK 调度 一. FCFS 调度(先来先服务) 磁盘调度的最简单形式当然是先来先服务&#xff08;FCFS&#xff09;算法。虽然这种算法比较公平&#xff0c;但…

VUE 2X 生命周期 ⑩①

目录 文章有误请指正&#xff0c;如果觉得对你有用&#xff0c;请点三连一波&#xff0c;蟹蟹支持✨ V u e j s Vuejs Vuejs初见生面周期分析生命周期生命周期总结总结 文章有误请指正&#xff0c;如果觉得对你有用&#xff0c;请点三连一波&#xff0c;蟹蟹支持✨ ⡖⠒⠒⠒⠤⢄…

团体程序设计天梯赛-练习集L1篇⑨

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;Hello大家好呀&#xff0c;我是陈童学&#xff0c;一个与你一样正在慢慢前行的普通人。 &#x1f3c0;个人主页&#xff1a;陈童学哦CSDN &#x1f4a1;所属专栏&#xff1a;PTA &#x1f381;希望各…

无显示器玩转树莓派桌面版

title: 无显示器玩转树莓派桌面版 zhaoolee在Github开启了长篇连载《树莓派不吃灰》https://github.com/zhaoolee/pi 目前已经更新到18篇&#xff0c;主要是给树莓派刷Ubuntu当做家庭服务器用。 恰好手头还有一块闲置的树莓派4B &#xff0c;我打算深度玩一下树莓派桌面版&…

Azkaban初认识

Azkaban初认识 文章目录 Azkaban初认识Azkaban是什么&#xff1f;为什么需要工作流调度系统&#xff1f;常见的工作流调度系统Azkaban 与 Oozie的对比 Azkaban是什么&#xff1f; Azkaban是一个开源的分布式工作流管理器&#xff0c;在LinkedIn实施&#xff0c;以解决Hadoop作业…

数字逻辑与模拟电子技术-部分知识点(1)——模电部分-半导体二极管,半导体的基础知识、本征半导体、杂质半导体、PN结的形成、PN结的特性、二极管的伏安特性

目录 半导体二极管 半导体的基础知识 本征半导体(经过加工处理) 杂质半导体 PN结的形成 PN结的特性 二极管的伏安特性 半导体二极管 半导体的基础知识 半导体器件的材料主要是硅&#xff08;Si&#xff09;、锗&#xff08;Ge&#xff09;和砷化镓&#xff08;GaAs&…

设计模式—责任链模式

一、待解决问题&#xff1a; 减少代码中 if else 语句&#xff0c;降低代码圈复杂度或深度&#xff0c;增强可读性。 1、需求背景&#xff1a; 采购订单创建&#xff0c;需要验证采购员、物料、供应商、供应商的银行账号等信息。如采购员权限到期、或供应商失效等问题&#xff…

django中发送get post请求并获得数据

django中发送get post请求并获得数据 项目结构如下注册路由 urls.py在处理函数中处理请求 views.py进行 get的请求01浏览器 get请求传参数02服务器django get参数解析获取01浏览器 post的发送浏览器get 请求 获取页面返回的 form 发送post请求 带参数 02服务器django的post请求…

“暗网议会”如今已成为现实

图片来源:Marcin Balcerzak 最近&#xff0c;“暗网议会”已经成为了网络犯罪分子试图证明自己影响力的最新流行语&#xff0c;安全内部人士对这个词也很感兴趣。 上周五&#xff0c;臭名昭著的亲俄黑客组织Killnet在其电报威胁帖子中使用了这个词语。随后&#xff0c;twitte…

E. Round Dance(dfs分辨特殊联通块)

Problem - 1833E - Codeforces 有 n 个人来到一个节日并决定跳几个“圆舞”。每个圆舞至少有 2 个人&#xff0c;且每个人恰好有两个邻居。如果圆舞中只有 2 个人&#xff0c;则它们在两侧拥有相同的邻居。 你想要确定有多少个“圆舞”可以跳。但是每个参与者只记得一个邻居。…

算法篇——动态规划 01背包问题 (js版)

416. 分割等和子集 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 链接&#xff1a;力扣 解题思路&#xff1a; 这道题看似是比较简单的背包问题&#xff1a; 首先可以通过判断数组和是否是…

python:并发编程(十九)

前言 本文将和大家一起探讨python并发编程的实际项目&#xff1a;win图形界面应用&#xff08;篇一&#xff0c;共八篇&#xff09;&#xff0c;系列文章将会从零开始构建项目&#xff0c;并逐渐完善项目&#xff0c;最终将项目打造成适用于高并发场景的应用。 本文为python并…
最新文章