1. WPF应用程序开发概述

参考: Application Development - WPF .NET Framework

WPF是表层框架(presentation framework),我们可以使用它去开发如下类型的应用程序:

  • 独立式应用程序(Standalone Application) :传统风格的Windows应用程序,它们构建为可执行组件集(executable assemblies)后,安装到客户计算机,随后在此计算机上运行。
  • XAML阅览应用程序(XBAP, XAML browser application) :由导航页组成的应用程序,它们构建为可执行组件集后,被存放至Web浏览器(如IE或Firefox)
  • 定制化控件库(Custom Control Libraries) :包含复用组件的不可执行组件集(non-executable assemblies)。
  • 类库(Class Libraries) :包含复用类的不可执行组件集。


注意:
Using WPF types in a Windows service is strongly discouraged.
在Windows服务中使用WPF类型,是禁止的。

WPF实现了一组服务(a host of services)来构建这些类型的应用程序:

  1. Application Management
  2. Windows and Dialog Boxes
  3. Navigation
  4. Hosting
  5. Build and Deploy

1. Application Management

通常,可执行WPF应用程序,需要一组核心功能:

  • 创建和管理公共应用程序基建(common application infrastructure) :创建入口点方法(entry point method)和Windows消息循环(Windows message loop),以接收系统和输入的消息。
  • 跟踪和把控(interacting)应用程序的生命周期。
  • 检索和处理命令行参数。
  • 分享应用程序域属性和UI资源。
  • 侦测和处理未知异常。
  • 返回结束码。
  • 管理独立式应用程序的窗口。
  • 跟踪XBAP的导航,跟踪独立式应用程序的导航窗口和frame

Application类 实现了这些功能;在你的应用程序内定义Application对象来使用这些功能。


WPF扩展了.NET框架的关于嵌入式资源的核心部分,使其支持如下三种不可执行数据文件:

  • 资源文件(Resource File)
  • 内容文件(Content File)
  • 数据文件(Data File)

具体来说,WPF可以使用 特定URI(unique URI) 来识别和加载这些不可执行数据文件。


2. Windows and Dialog Boxes

用户使用 窗口(window) ,与WPF独立式应用程序交互。

The purpose of a window is
to host application content
and expose application functionality that usually allows users to interact with the content.
窗口的用途是:装载应用内容,展示(与内容相关的)应用功能。

在WPF中,窗口被封装到Window类;该类支持如下功能:

  • 创建和显示窗口
  • 建立父窗口与子窗口(owner/owned window)的关系
  • 配置窗口外观(例如尺寸、位置、图标、标题栏文本、边框)
  • 跟踪和把控(interacting)窗口的生命周期



窗口可以创建特殊类型的窗口,即 对话框(dialog box)

Both modal and modeless types of dialog boxes can be created.

WPF沿用了底层Windows API的三种公共对话框:

  • OpenFileDialog
  • SaveFileDialog
  • PrintDialog

消息框(message box)是特殊类型的对话框,它向用户展示重要的文本信息,并且询问了简单的Yes/No/OK/Cancel问题。

可以使用 MessageBox类 来创建和显示消息框。


3. Navigation

WPF使用页面(Page)和超链接(Hyperlink)实现Web风格的导航。

具体来说,可以使用多种方式实现导航:

  • 将独立式页面(Standalone page)驻留于Web浏览器内。
  • 将页面(Page)编译为XBAP,然后将该XBAP驻留于Web浏览器内。
  • 将页面(Page)编译为独立式应用程序,然后由导航窗口(NavigationWindow)托管。
  • 将页面(Page)交由frame (Frame)托管,此frame可能会驻留于独立式页面;
  • 将页面(Page)交由某个页面托管,此页面可能被编译为XBAP应用程序,也可能被编译为独立式应用程序。


为了更加便捷地创建导航,WPF提供了多种辅助方法:

  • 用于处理导航请求的共享式导航引擎(NavigationService);可以在Frame, NavigationWindow, 和 XBAP中使用它,以实现内部应用程序导航(intra-application navigation)
  • 用于启动导航的导航方法(Navigation method)
  • 用于跟踪和处理导航生命周期的导航事件(Navigation event)
  • 使用可读写的日志(journal)记录导航历史(back and forward navigation)

此外,WPF还提供特殊类型的导航:结构导航(structured navigation).



4. Hosting

XBAP可以驻留于IE或Firefox

每个驻留模型(hosting model)都具有自己的决策和制约。




5. Build and Deploy

虽然,可以使用命令行编译器来构建简单的WPF应用程序,但使用Visual Studio开发WPF应用程序可以简化开发和构建的过程。

Depending on the type of application you build, there are one or more deployment options to choose from.




(完)

编辑于 2023-11-20 21:59 ・IP 属地广东

文章被以下专栏收录