最近比较空闲,在博客园看了神殿骑士的WPF系列,遂引发了学习WPF的强烈兴趣,到目前,已经看了五篇,为了避免忘记,故将学到的东西记下,以后在学习的路上要有什么心得和体会也一并写下,希望自己能坚持下来,不管以后多忙!!!
一、WPF应用程序的启动
WPF应用程序的启动由Application来管理,即app.xmal和app.xaml.cs,启动方式有两种:1、可以在app.xma中定义 App.xaml文件的内容大致如下所示:
2、在app.xmal.cs中代码编写启动,代码示例如下:
代码
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Windows;
namespace WPFApplications
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
[STAThread]
static void Main()
{
// 定义Application对象作为整个应用程序入口
Application app = new Application();
// 方法一:调用Run方法,参数为启动的窗体对象 ,也是最常用的方法
Window2 win = new Window2();
app.Run(win);
// 方法二:指定Application对象的MainWindow属性为启动窗体,然后调用无参数的Run方法
//Window2 win = new Window2();
//app.MainWindow = win;
//win.Show();
// win.Show()是必须的,否则无法显示窗体
//app.Run();
// 方法三:通过Url的方式启动
//app.StartupUri = new Uri("Window2.xaml", UriKind.Relative);
//app.Run();
}
}
}
二、WPF应用程序的关闭
OnLastWindowClose(默认值): | 最后一个窗体关闭或调用Application对象的Shutdown() 方法时,应用程序关闭。 |
OnMainWindowClose | 启动窗体关闭或调用Application对象的Shutdown()方法时,应用程序关闭。(和C#的Windows应用程序的关闭模式比较类似) |
OnExplicitShutdown | 只有在调用Application对象的Shutdown()方法时,应用程序才会关闭。 |
以上关闭选项既可以在xaml中更改
<Application x:Class="WPFApplications.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Window2.xaml"
ShutdownMode="OnExplicitShutdown">
<Application.Resources>
</Application.Resources>
</Application>
也可以在后台代码文件中进行更改但必须注意这个设置写在app.Run()方法之前 ,如下代码:
app.ShutdownMode = ShutdownMode.OnExplicitShutdown;
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文件中添加事件的处理方法;2、在自定义的类中可以做正常的C#的事件绑定。
四、WPF应用程序生存周期
当然这幅图也只是简单的概括了WPF的执行顺序和生命周期,具体还要细致研究才是。