一、Application简介
WPF和WinForm很相似,WPF与WinForm一样有一个 Application对象来进行一些全局的行为和操作,并且每个 Domain (应用程序域)中仅且只有一个 Application 实例存在。和 WinForm 不同的是WPF Application默认由两部分组成 : App.xaml 和 App.xaml.cs,这有点类似于 Asp.Net WebForm,将定义和行为代码相分离。
Application 类具体有以下功能:
1.跟踪应用程序的生存期并与之交互。
2.检索和处理命令行参数。
3.检测和响应未经处理的异常。
4.共享应用程序范围的属性和资源。
5.管理独立应用程序中的窗口。
6.跟踪和管理导航。
二、初始App.xaml
使用Visual Studio创建一个WPF应用程序,使用App.xaml文件启动应用程序。XAML并不是严格的XML格式的文件,它是一种DSL语言,它所有的定义都会由编译器最后编译成代码。
App.xaml文件
<Application x:Class="_010_WPF_Demo.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:_010_WPF_Demo" StartupUri="MainWindow.xaml"> <Application.Resources> </Application.Resources> </Application>
App.xaml.cs文件
using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Threading.Tasks; using System.Windows; namespace _010_WPF_Demo { /// <summary> /// Interaction logic for App.xaml /// </summary> public partial class App : Application { } }
App类继承Application。Application实现单一实例模式,以提供对窗口,属性和资源范围服务的共享访问。因此,每个AppDomain只能创建一个Application实例。
也可以使用标记、标记和代码隐藏或代码实现Application。如使用Application标记实现,则必须将标记文件配置为MICROSOFT生成引擎(MSBuild)ApplicationDefinition项。
独立应用程序不需要 Application 对象;可以在不创建 实例Application的情况下 (Main) 实现自定义static入口点方法以打开窗口。
二、自定义Main方法启动WPF应用程序
首先在项目中排除App.xaml文件。操作步骤:鼠标右键,弹出“弹出菜单 -> 从项目中排除,然后创建启动文件App.cs,并在App.cs类中添加Main方法
▪第一种:启动应用程序的代码
[STAThread] private static void Main() { Application app = new Application(); MainWindow main=new MainWindow(); app.Run(main); }
▪第二种:启动应用程序的代码
[STAThread] private static void Main() { Application app = new Application(); MainWindow main=new MainWindow(); app.MainWindow= main; main.ShowDialog(); app.Run(); }
▪第三种:启动应用程序的代码
[STAThread] private static void Main() { Application app = new Application(); app.StartupUri = new Uri("MainWindow.xaml", UriKind.Relative); app.Run(); }
以上三种方法都可以使用代码启动一个WPF应用程序。
三、Application属性
四、Application方法
五、Application事件
六、Application总结
Application是封装WPF应用程序特定功能的类,实现单一实例模式,以提高对其窗口,属性和资源范围服务的共享访问,因此,每个WPF的AppDomain只是创建类的Application一个实例。Application可以通过使用标记、标记和代码隐藏或代码实现Application。