代码改变世界

WPF Summary:Application概述

2011-03-23 17:50  海蓓娜楽  阅读(284)  评论(0编辑  收藏  举报

         WPF 应用程序是一个从 Application派生的类,它由很多个特定于应用程序的元素组成,其中包括用户界面 (UI)、业务逻辑、数据访问逻辑、控件以及数据。 应用程序不同,这些元素通常也不同。 但是,所有应用程序往往都具有一组共同的功能,便于进行应用程序实现和管理。

         典型的 WPF 应用程序定义通过结合使用标记和代码隐藏来实现。 这使您能够使用标记以声明方式设置应用程序的属性、资源以及注册事件,同时在代码隐藏中处理事件并实现特定于应用程序的行为。

         若要使标记文件和代码隐藏文件能够配合工作,需要满足下列条件:

Ø 在标记中,Application 元素必须包含 x:Class 特性。 生成应用程序时,标记文件中如果存在 x:Class,则 MSBuild 将创建一个从 Application 派生的 partial 类,并且该类的名称由 x:Class 特性指定。 这要求添加 XAML 架构的 XML 命名空间声明 (xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml");

Ø 在代码隐藏中,该类必须是 partial 类,其名称由标记中的 x:Class 特性指定,并且该类必须从 Application 派生。这样,代码隐藏文件就与应用程序生成时为标记文件生成的 partial 类相关联。

         这些代码包括入口点方法 Main。 STAThreadAttribute 特性应用于 Main 方法以指示 WPF 应用程序的主 UI 线程是一个 STA 线程,此线程是 WPF 应用程序所必需的。 调用 Main 时,它将创建 App 的一个新实例,然后调用 InitializeComponent 方法注册事件,并设置在标记中实现的属性。 因为系统已为您生成 InitializeComponent,所以您无需像对 Page 和 Window 实现所做的那样从应用程序定义中显式调用 InitializeComponent。 最后,调用 Run 方法以启动应用程序。

         由于在整个应用程序中共享 Application 类的服务,因此对于每个 AppDomain,可以只有一个 Application 类实例。 为了实施这一点,系统将 Application 类实现为单一实例类,该类使用 static Current 属性创建自身的单一实例并提供对该实例的共享访问。当 Application 完成其初始化任务后,其生存期才真正开始。