一.Application介绍:
WPF和WinForm很相似,WPF与WinForm一样有一个Application对象,进行一些全局的行为和操作,并且每个Domain(应用程序域)中仅有一个Application实例存在。
和WinForm不同的是,WPF的Application默认为两部分组成:App.xaml和App.xaml.cs,这点类似于Asp.Net.WebForm,将定义和行为代码相分离。
微软把WPF中经常使用的功能都封装在Application类当中。Applicaiton类仅有一下功能:
1.跟踪应用程序的生存期并与之交互。
2.检索和处理命令行参数。
3.检测和响应未经处理的异常。
4.共享应用程序范围的属性和资源。
5.管理独立应用程序中的窗口。
6.跟踪和管理导航。
Applicaiton对象的其他属性:
Current:获取当前AppDomain的Application对象。
Dispatcher:获取与此DispatcherObject关联的Dispatcher。(继承自DispatcherObject)
MainWindow:获取或设置应用程序的主窗口。
Properties:获取应用程序范围的属性集合。
ResourceAssembly:获取或设置对于WPF应用程序的资源提供已装箱统一资源标识符(RUL)的Assembly。
Resources:获取或设置应哟功能程序范围资源的集合,列如样式和笔画。
ShutdownMode:获取或设置会导致Shutdown方法调用的情况。
StartupUri:获取或社会子自动显示的Ui,当应用程序启动时。
Windows:获取在应用程序中实例化窗口。
添加Application对象事件:
Activated:当应用程序成为前台应用程序时触发。
Deactivated:当应用程序不再是前台应用程序时触发。
DispatcherUnhandledException:如果异常是由应用程序引发,但未处理,触发。
Exit:在应用程序关闭之前,触发,且不能撤销。
FragmentNavigation:发生在应用程序的一个浏览器启动导航到内容片段导航时,会立即发生,如果所需片段在当前目录,或者,在源XAML目录加载后,若谷所需片段在其他内容。
LoadCompleted:在导航到在应用程序中的一个浏览器的目录加载的分析完成并已呈现时触发。
Navigated:当导航在应用程序中使用的浏览器已找到的内容时触发,这时它可能还没有完成加载。
Navigating:在一个新的导航由应用程序,一个浏览器请求发生。
NavigationFailed:出现问题,则错误,当应用程序的一个浏览器导航到所请求得内容时。
NavigationProgress:定期发生在应用程序中使用浏览器管理提供导航进度信息的下载过程。
NavigationStopped:发生在一个浏览器的StopLoading方法在应用程序的调用,或者,如果新的导航由浏览器请求,在当前导航正在进行的。
SessionEnding:当用户在注销或者关闭操作系统关闭Windows会话时发生。
Startup:当Application对象的Run方法调用,发生
在应用程序中添加事件,我发现App。xaml的属性里面根本没有添加事件的方法,只能在MainWindow.xaml里面加。所以说,想要在App.xaml里面添加事件,也只能手动修改App.xaml的代码了。
二.三种自定义启动WPF程序:
首先,在“解决方案资源管理器中”,将系统默认的App.xaml启动文件,从项目中排除。
其次,新增一个类,当作项目启动程序:
最后,开始编码:
1.第一种启动应用程序的代码:(注意,Main方法上的[STAThread]必须要标注)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace WPFDemo
{
class App
{
[STAThread]//关键标识,一定要加
static void Main()
{
//定义Application对象作为整个应用程序入口
Application app = new Application();
//方法一:调用Run方法,这种方法跟winform的调用一样
MainWindow win = new MainWindow();
app.Run(win);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2.第二种启动应用程序的代码:(注意,Main方法上的[STAThread]必须要标注)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace WPFDemo
{
class App
{
[STAThread]//关键标识,一定要加
static void Main()
{
//定义Application对象作为整个应用程序入口
Application app = new Application();
//方法二:制定Application对象的MainWindow属性作为启动窗体,然后调用无参数的Run方法
MainWindow win = new MainWindow();
app.MainWindow = win;
//是必须的,否则无法显示窗体
win.Show();
app.Run();
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
3.第三种启动应用程序的代码:(注意,Main方法上的[STAThread]必须要标注)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace WPFDemo
{
class App
{
[STAThread]//关键标识,一定要加
static void Main()
{
//定义Application对象作为整个应用程序入口
Application app = new Application();
方法三:通过Url的方式启动
app.StartupUri = new Uri("MainWindow.xaml",UriKind.Relative);
app.Run();
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
ENG
暂无评论内容