(二)WPF - 应用程序

一、运行程序的过程:

  • (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.hqwc.cn/news/578.html

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

相关文章

Finalshell安全吗?Xshell怎么样?

文章目录 一、我的常用ssh连接工具二、Xshell2.1 下载&#xff1a;认准官网2.2 Xshell 配置2.3 Xftp和WinSCP 一、我的常用ssh连接工具 之前讲过&#xff1a; 【服务器】远程连接选SSH&#xff08;PUTTY、Finalshell、WinSCP&#xff09; 还是 远程桌面&#xff08;RDP、VNC、…

使用POI将excel文件导入到数据库

概要 随着时代变化&#xff0c;有的需求也会越来越多&#xff0c;例如&#xff1a;有的文件上千条数据需要导入数据库不可能手动一条条导入吧&#xff1f;太浪费时间了&#xff01;所以需要编写程序让程序来导入 整体架构流程 我这里使用的是springbootmybatisMVC的项目架构…

ElasticSearch

title: ElasticSearch author: zed 一、引言 1.1 海量数据 在海量数据中执行搜索功能时&#xff0c;如果使用MySQL&#xff0c;效率太低。 1.2 全文检索 在海量数据中执行全文搜索时&#xff0c;如果使用MySQL&#xff0c;效率太低。 1.3 高亮显示 将搜索关键字&#xff0c;以…

深度解读 Android 14 重要的 8 个新特性~

一年一度的 Android 升级永不缺席&#xff0c;今年的代号叫 Upside Down Cake&#xff0c;倒置蛋糕&#xff0c;简称 U&#xff0c;对外版本为 Android 14。 一般来说&#xff0c;升级任务分为 ROM 角度和 App 角度&#xff0c;前者比较关心系统内部实现的变化&#xff0c;后者…

Mac电脑硬件/软件运行状况查看工具

iStat Menus是一款系统监控和管理工具&#xff0c;旨在帮助Mac用户实时监控电脑的各项硬件和软件信息。它以直观和定制化的方式提供了丰富的系统状态指标&#xff0c;让用户能够全面了解和管理自己的Mac电脑。 iStat Menus提供了一系列的菜单栏指示项目&#xff0c;可以显示诸如…

【MySQL】不就是子查询

前言 今天我们来学习多表查询的下一个模块——子查询&#xff0c;子查询包括了标量子查询、列子查询、行子查询、表子查询&#xff0c;话不多说我们开始学习。 目录 前言 目录 一、子查询 1. 子查询的概念 2. 子查询语法格式 2.1 根据子查询结果不同可以分为&#xff1a;…

vscode修改markdown侧边预览pdf字体等设置

文章目录 1.按CtrlShiftP打开命令窗口2.在命令窗口出输入Markdown Preview Enhanced: Customize Css&#xff0c;打开style.less文件 1.按CtrlShiftP打开命令窗口 2.在命令窗口出输入Markdown Preview Enhanced: Customize Css&#xff0c;打开style.less文件 然后在文件内加…

群晖 NAS WebDAV服务手机ES文件浏览器远程访问

文章目录 1. 安装启用WebDAV2. 安装cpolar3. 配置公网访问地址4. 公网测试连接5. 固定连接公网地址6. 使用固定地址测试连接 转载自cpolar极点云文章&#xff1a;群晖NAS搭建WebDAV服务手机ES文件浏览器远程访问 有时候我们想通过移动设备访问群晖NAS 中的文件,以满足特殊需求,…

OpenMMLab OpenMMLab mmdeploy v1.1.0模型部署(一)

一、MMDepoly整体框架 模型部署是指把机器学习训练生成的算法模型&#xff0c;部署到各类云、边、端设备上去&#xff0c; 并使之高效运行&#xff0c;从而将算法模型实际地应用到现实生活中的各类任务中去&#xff0c;从而实现AI的智能化转型。 目前&#xff0c;我们已经支持…

CSS 内容盒子

这章比较重要&#xff0c;会不断更新❗ 文章目录 内容盒子开发者工具的使用border 边框padding 内边距margin 外边距盒子整体尺寸元素默认样式与CSS重置元素分类块级标记行级标记行内块标记 display样式内容溢出裁剪掉溢出部分滚动条 圆角边框 border-radius 内容盒子 提示&am…

Redis进阶 - Redis分片集群

原文首更地址&#xff0c;阅读效果更佳&#xff01; Redis进阶 - Redis分片集群 | CoderMast编程桅杆https://www.codermast.com/database/redis/redis-advance-sharded-cluster.html 搭建分片集群 主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决&a…

探索视频文本特征加速检索解决方案——倒排索引

前言 随着视频内容的不断增加&#xff0c;如何快速准确地检索到所需的视频成为了一个重要的问题。而视频文本特征加速检索解决方案——倒排索引&#xff0c;成为了解决这一问题的有效手段。该技术可以加速文本和视频片段特征匹配、相似度排序过程&#xff01; 定义——何为“…