得鹿梦鱼 得鹿梦鱼

WPF应用程序管理

WPF应用程序由System.Windows.Application类进行管理

创建WPF应用程序

  • 使用APP.xmal文件定期启动引用程序
<Application x:Class="WpfApplicationLifeCycle.App"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    StartupUri="Window1.xaml">    <Application.Resources>    </Application.Resources></Application>

其中StartupUri表示指定启动的WPF窗体

  • 自定义类中指定WPF应用程序的启动
using System;using System.Windows;namespace WpfApplicationHelloWorld {    public class HelloWorld     {        static void Main{            Application app = new Application;            // 方法一            // Window2 win = new Window2;            // app.Runwin;                        // 方法二            // Window2 win = new Window2;            // app.MainWindow = win;            // win.Show;            // app.Run;            // 方法三            app.StartupUri = new Uri"window2.xmal", UriKind.Relative;            app.Run;        }     }}

应用程序关闭

应用程序关闭时的策略由ShutdownMode属性指定,其类型为System.Windows.ShutdownMode枚举类型,其枚举成员有:

  • OnLastWindowClose(默认值):当应用程序中的最后一个窗体关闭时或调用Application对象的Shutdown方法时,应用程序关闭。
  • OnMainWindowClose:当主窗体(即启动窗体)关闭时或调用Application对象的Shutdown方法时,应用程序关闭。(类似于C#的Windows应用程序的关闭模式)
  • OnExplicitShutdown:只有在调用Application对象的Shutdown方法时,应用程序才会关闭。

代码修改

<Application x:Class="WpfApplicationLifeCycle.App"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    StartupUri="Window1.xaml"    ShutdownMode="OnExplicitShutdown">    <Application.Resources>    </Application.Resources></Application>
// 在执行app.run方法执行即可app.ShutdownMode = ShutdownMode.OnExplicitShutdown;

Application对象的事件

名称描述
Activated当应用程序成为前台应用程序时发生
Deactivated当应用程序停止作为前台应用程序时发生
DispatcherUnhandledException在异常由应用程序引发但未进行处理时发生
Exit恰好在应用程序关闭之前发生,且无法取消
FragmentNavigation当应用程序中的导航器开始导航至某个内容片断时发生,如果所需片段位于当前内容中,则导航会立即发生;或者,如果所需片段位于不同内容中,则导航会在加载了源 XAML 内容之后发生
LoadCompleted在已经加载、分析并开始呈现应用程序中的导航器导航到的内容时发生
Navigated在已经找到应用程序中的导航器要导航到的内容时发生,尽管此时该内容可能尚未完成加载
Navigating在应用程序中的导航器请求新导航时发生
NavigationFailed在应用程序中的导航器在导航到所请求内容时出现错误的情况下发生
NavigationProgress在由应用程序中的导航器管理的下载过程中定期发生,以提供导航进度信息
NavigationStopped在调用应用程序中的导航器的StopLoading方法时发生,或者当导航器在当前导航正在进行期间请求了一个新导航时发生
SessionEnding在用户通过注销或关闭操作系统而结束Windows会话时发生
Startup在调用Application对象的Run方法时发生

应用事件的处理

  • 可以在App.xmal中做事件的绑定
<Application x:Class="WpfApplicationLifeCycle.App"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    Startup="Application_Startup"    StartupUri="Window1.xaml">    <Application.Resources>    </Application.Resources></Application>
// App.xmal.cs文件中using System;using System.Windows;namespace WpfApplicationHelloWorld {    public partial class HelloWorld: Application    {        private void Application_Startupobject sender, StartupEventArgs e         {            // 定义程序启动时要处理的内容        }    }}

应用程序生存周期

WPF应用程序生存周期