为满足业务线应用的需求,我们将继续推出 Universal Windows Platform(UWP)系列文章。下面,我们将注意力转向另一个备受关注的问题,即多窗口支持。
窗口模型
是否可以在单个应用中打开多个窗口,这是许多开发人员一直关注的问题。Microsoft 在此上迈出了更大的一步,支持开发人员实现可在桌面、平板和 3D/VR 模式下同样工作良好的应用。为此,首先操作系统必须能以用某种方式将其环境信息告知给应用。当前的“窗口环境”(Windowing Environment)模式包括:
- 重叠模式:这是传统的 Windows 设计,即多个视图同时可见,并可各自独立移动。
- 浸入模式:本质上而言该模式就是平板的操作体验,即同一时间只有一个视图可见。
- 全息图模式:前两种模式都是二维的。而全息图模式添加了第三个维度,支持在混合显示、增强现实和虚拟现实场景中使用。
不同视图的环境信息可以各不相同。一个应用可能具有一个视图作为正常窗口显示在桌面上,而另一个视图则显示在 Oculus Rift 头盔中。
呈现者(Presenter)和定位者(Positioner)
呈现者终究是一些高层的易用 API。它们实现一些基本功能的处理,例如最大化 / 最小化、画中画,以及“其它此类基本窗口”。
定位者提供一些高级 API。它们可以根据不同的环境完成一些任务。例如,相对于另一个窗口定位当前窗口、更改窗口的大小,将窗口移动到指定的显示区域或环境中。
新线程模型
当前,UWP 中的每个窗口分别对应一个线程。这使得窗口间难以共享数据,甚至对于一些基本任务同样如此。例如,显示一个浮动颜色拾取器,可能需要转动(spinning up)整个新 XAML 内核。
使用新的“轻量级窗口”模型,所有的 UWP 窗口可共享同一线程(开发人员依然可以根据自身喜好使用独立的线程)。
窗口的路线图
2018 年,UWP 窗口的目标是提供伴生窗口(例如,浮动颜色拾取器)、浮出(flyout)、呈现者、轻量级伴生窗口、环境信息和定位者等特性。
其长期目标包括:
- 轻量级独立窗口。
- 透明(该特性曾在 Windows Vista 中广为采用,但是现在罕为使用)。
- 可 Docker 化的窗口。
- 3D 定位。
- 高级窗口分组。
- 更多的呈现者和定位者。
在下一篇文章中,我们将介绍 UWP 应用的新发布模型。
查看英文原文: Windowing In Universal Windows Platform (UWP) Applications
评论