WPF应用程序管理
WPF应用程序管理(更多资源:http://cleopard.download.csdn.net/)
一、WPF应用程序由System.Windows.Application类进行管理
二、创建WPF应用程序
创建WPF应用程序有两种方式:
1、Visual Studio和Expression Blend默认的方式,使用App.xaml文件定义启动应用程序
App.xaml文件的内容大致如下:
1: <Application x:Class="WpfApplicationLifeCycle.App"
2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4: StartupUri="Window1.xaml">
5: <Application.Resources>
6: </Application.Resources>
7: </Application>
其中StartupUri指定启动的WPF窗体
2、可以自已定义类,定义Main方法实现对WPF应用程序的启动
在项目中添加一个类,类的代码如下,在项目选项中,设定此类为启动项。
1: using System;
2: using System.Windows;
3:
4: namespace WpfApplicationLifeCycle
5: {
6: public class MainClass
7: {
8: [STAThread]
9: static void Main()
10: {
11: // 定义Application对象
12: Application app = new Application();
13:
14: // 方法一:调用Run方法,参数为启动的窗体对象
15: Window2 win = new Window2();
16: app.Run(win);
17:
18: // 方法二:指定Application对象的MainWindow属性为启动窗体,调用无参数的Run方法
19: //Window2 win = new Window2();
20: //app.MainWindow = win;
21: //win.Show(); // 此处必须有win.Show(),否则不能显示窗体
22: //app.Run();
23:
24: // 方法三:
25: //app.StartupUri = new Uri("Window2.xaml", UriKind.Relative);
26: //app.Run();
27: }
28: }
29: }
三、应用程序关闭
应用程序关闭时的策略由ShutdownMode属性指定,其类型为System.Windows.ShutdownMode枚举类型,其枚举成员有:
- OnLastWindowClose(默认值):当应用程序中的最后一个窗体关闭时或调用Application对象的Shutdown()方法时,应用程序关闭。
- OnMainWindowClose:当主窗体(即启动窗体)关闭时或调用Application对象的Shutdown()方法时,应用程序关闭。(类似于C#的Windows应用程序的关闭模式)
- OnExplicitShutdown:只有在调用Application对象的Shutdown()方法时,应用程序才会关闭。
更改的时候,可以直接在App.xaml中更改:
1: <Application x:Class="WpfApplicationLifeCycle.App"
2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4: StartupUri="Window1.xaml"
5: ShutdownMode="OnExplicitShutdown">
6: <Application.Resources>
7: </Application.Resources>
8: </Application>
也可以在代码文件(App.xaml.cs)中更改
1: Application app = new Application();
2: Window2 win = new Window2();
3:
4: // 更改关闭模式必须要在调用app.Run()方法之前
5: app.ShutdownMode = ShutdownMode.OnExplicitShutdown;
6: app.Run(win);
四、Application对象的事件
|
名称 |
说明 |
|
Activated |
当应用程序成为前台应用程序时发生。 |
|
Deactivated |
当应用程序停止作为前台应用程序时发生。 |
|
DispatcherUnhandledException |
在异常由应用程序引发但未进行处理时发生。 |
|
Exit |
恰好在应用程序关闭之前发生,且无法取消。 |
|
FragmentNavigation |
当应用程序中的导航器开始导航至某个内容片断时发生,如果所需片段位于当前内容中,则导航会立即发生;或者,如果所需片段位于不同内容中,则导航会在加载了源 XAML 内容之后发生。 |
|
LoadCompleted |
在已经加载、分析并开始呈现应用程序中的导航器导航到的内容时发生。 |
|
Navigated |
在已经找到应用程序中的导航器要导航到的内容时发生,尽管此时该内容可能尚未完成加载。 |
|
Navigating |
在应用程序中的导航器请求新导航时发生。 |
|
NavigationFailed |
在应用程序中的导航器在导航到所请求内容时出现错误的情况下发生。 |
|
NavigationProgress |
在由应用程序中的导航器管理的下载过程中定期发生,以提供导航进度信息。 |
|
NavigationStopped |
在调用应用程序中的导航器的 StopLoading 方法时发生,或者当导航器在当前导航正在进行期间请求了一个新导航时发生。 |
|
SessionEnding |
在用户通过注销或关闭操作系统而结束 Windows 会话时发生。 |
|
Startup |
在调用 Application 对象的 Run 方法时发生。 |
应用程序的事件处理可以:
1、在App.xaml中做事件的绑定,在App.xaml.cs文件中添加事件的处理方法
在App.xaml文件中:
1: <Application x:Class="WpfApplicationLifeCycle.App"
2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4: StartupUri="Window1.xaml"
5: Startup="Application_Startup">
6: <Application.Resources>
7: </Application.Resources>
8: </Application>
在App.xaml.cs文件中:
1: using System.Windows;
2:
3: namespace WpfApplicationLifeCycle
4: {
5: /// <summary>
6: /// Interaction logic for App.xaml
7: /// </summary>
8: public partial class App : Application
9: {
10: private void Application_Startup(object sender, StartupEventArgs e)
11: {
12: // 定义应用程序启动时要处理的内容
13: }
14: }
15: }
2、在自定义的类中可以做正常的C#的事件绑定:
1: [STAThread]
2: static void Main()
3: {
4: // 定义Application对象
5: Application app = new Application();
6: Window2 win = new Window2();
7:
8: // 添加事件的绑定
9: app.Startup += new StartupEventHandler(app_Startup);
10:
11: app.Run(win);
12: }
13:
14: static void app_Startup(object sender, StartupEventArgs e)
15: {
16: Window2 win = new Window2();
win.Show();
win.button1.Content = "YOU!";
17: }
主窗体载入时,会在Window2里面定义的button1上面就会显示YOU!
五、WPF应用程序生存周期
(更多资源:http://cleopard.download.csdn.net/)
WPF应用程序管理的更多相关文章
- WPF 获取程序路径的一些方法,根据程序路径获取程序集信息
一.WPF 获取程序路径的一些方法方式一 应用程序域 //获取基目录即当前工作目录 string str_1 = System.AppDomain.CurrentDomain.BaseDirector ...
- WPF 之 WPF应用程序事件
当新建一个wpf应用程序,会自动生成一个App.xaml和MainWindow.xaml文件. 其中 App.xam 用来设置Application,应用程序的起始文件和资源及应用程序的一些属性和事件 ...
- WPF发布程序后未授予信任的解决办法
WPF发布程序后未授予信任的解决办法 基于浏览器的WPF应用程序由于需要比较高的操作权限,所以在项目的安全性属性中选择了“这是完全可信的应用程序”选项.可是,在发布部署后,在其他电脑上打开xbap文件 ...
- 【ASP.NET Web API教程】3.3 通过WPF应用程序调用Web API(C#)
原文:[ASP.NET Web API教程]3.3 通过WPF应用程序调用Web API(C#) 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的 ...
- SharePoint 创建列表并使用Windows Presentation Foundation应用程序管理列表
SharePoint创建列表并使用程序管理列表 列表是SharePoint开发者输入数据的方式之中的一个.使用Web界面创建一个列表并加入一些数据.过程例如以下: 1. 打开站点. 2 ...
- 细数改善WPF应用程序性能的10大方法
WPF(Windows Presentation Foundation)应用程序在没有图形加速设备的机器上运行速度很慢是个公开的秘密,给用户的感觉是它太吃资源了,WPF程序的性能和硬件确实有很大的关系 ...
- 【C#】1.3 WPF应用程序学习要点
分类:C#.VS2015 创建日期:2016-06-14 使用教材:十二五国家级规划教材<C#程序设计及应用教程>(第3版) 一.要点概述 <C#程序设计及应用教程>(第3版) ...
- CentOS学习笔记--程序管理
程序管理 一个程序被加载到内存当中运行,那么在内存内的那个数据就被称为程序(process).程序是操作系统上非常重要的概念, 所有系统上面跑的数据都会以程序的型态存在.那么系统的程序有哪些状态?不同 ...
- 11、创建不使用XAML的WPF应用程序
首先新建一个空的项目,然后添加一个类,引用一下程序集: PresentationCore.dll PresentationFramework.dll WindowsBase.dll namespace ...
随机推荐
- SpringBoot2整合Redis
pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- Error:Execution failed for task ':app:compileDebugAidl'. > java.lang.IllegalStateException: aidl is missing from '/Users/renguodong/Library/Android/sdk/build-tools/26.0.2/aidl'
错误信息:Error:Execution failed for task ':app:compileDebugAidl'. > java.lang.IllegalStateException: ...
- Kafka探究之路-命令小结
操作kafka之前,要先启动安装好的zk ,因为kafka的数据都保存在zk中,zk相当于是kafka的数据库吧. 安装的zk kafka 一定要按照书上,网上的教程,将相应的配置文件全部改成自己的, ...
- Java解决大文件读取的内存问题以及文件流的比较
Java解决大文件读取的内存问题以及文件流的比较 传统方式 读取文件的方式一般是是从内存中读取,官方提供了几种方式,如BufferedReader, 以及InputStream 系列的,也有封装好的如 ...
- [BJDCTF 2nd]假猪套天下第一 && [BJDCTF2020]Easy MD5
[BJDCTF 2nd]假猪套天下第一 假猪套是一个梗吗? 进入题目,是一个登录界面,输入admin的话会返回错误,登录不成功,其余用户可以正常登陆 以为是注入,简单测试了一下没有什么效果 抓包查看信 ...
- Aap.Net中的Action和Func委托
前言 最近在阅读某开源框架源码的时候,发现作者在其中运用了很多Action委托和Func委托,虽然我之前在项目中也有一些对委托的实操,但还是免不了长时间的不用,当初消化的一些委托基础都遗忘了...索性 ...
- web移动端点击穿透问题
在移动端开发的时候,我们有时候会遇到这样一个bug:点击关闭遮罩层的时候,遮罩层下面的带有点击的元素也会被触发,给人一种击穿了页面的感觉,这是为什么呢?主要是因为用户touch事件关闭按钮的时候,触发 ...
- box-sizing什么时候用?常用的值都有什么?
一般在做自适应的网页设计的时候用,用这个属性网页结构才不会被破坏. 常用的值: 1. content-box:宽度和高度分别应用到元素的内容框,在宽度和高度之外绘制元素的内边距和边框. 2. bo ...
- Python术语对照表
>>> 交互式终端中默认的 Python 提示符.往往会显示于能以交互方式在解释器里执行的样例代码之前. ... 可以是指:交互式终端中输入特殊代码行时默认的 Python 提示符, ...
- Tomcat 知识点总结
Tomcat 学习笔记.本文相关配置均为 tomcat8 下,其他版本可能略有不同.如有错误请多包涵. 架构 首先,看一下整个架构图 接下来简单解释一下. Server:服务器.Tomcat 就是一个 ...