Windows 8 和 Windows Phone 8 趋于融合。与此同时,有志于为这两个平台构建应用程序的开发人 员必须了解两者之间重要的相似之处和不同之处。了解 Windows 8 和 Windows Phone 运行时 API 当前 的共有功能使您非常有机会同时为这两个平台交付应用程序,并利用大量同样的知识、工具、代码和资 产。在本文中,我将探讨这些区别和共性,以帮助您在开始构建同时面向这两个平台的解决方案之前了 解能做到和做不到的事情。
UX 中的一致性(磁贴、形式丰富的触摸界面、应用栏和导航的用法)简化了为这两个平台设计和实 现应用程序的过程。而采用同一个 API 外围应用可简化许多方案下的代码共享。可选择适合应用程序的 技术: 对这两个平台使用 C#、Visual Basic、C++ 或混用这几种技术。aka.ms/sharecode 上的资 源包含有关创建在 Windows Phone 8 和 Windows 8 中运行的应用程序的大量信息,以及为了在为两者 构建应用时最大限度地重复利用代码的现有代码共享方法。
具体各方面的比较
为了有效地为这两个平台编写代码,需要了解功能上的重要区别,以及大体上类似但 API 和实现有 所不同的功能。对于这些功能,不应尝试进行代码重用。我将详细介绍三个重要的关注方面:
UX
数据模型和支持代码
特定于平台的功能
UX
在设计跨平台应用程序的 UI 时,外观尺寸是一个重要的考虑因素。需要考虑屏幕分辨率、屏幕大小 和设备默认方向等特性。必须谨慎决定 UI 以确保用户体验在特定设备的约束下得到优化。
您很快就会意识到,在 Windows Phone 8 应用程序中加入 Windows 应用商店应用的所有功能并不合 理,因此必须为每个平台设计其自身的 UX。图 1 举例介绍为了构建尽可能最佳的体 验所必须考虑的各种 UX 区别。
图 1:Windows Phone 8 与 Windows 8 UX 功能比较
XAML 命名空间 :虽然 Windows 8 和 Windows Phone 8 都使用 XAML 进行 UI 设计,但不应跨应用程序重用 XAML。这两个平台的区别巨大:页面布局和方向、XAML 命名空间和 XAML 控件,使得重用这一点变得非 常困难。
虽然许多控件在两个平台中都存在,但这些控件所在的命名空间不同。例如,可在 Windows.UIXaml.Controls、Microsoft.Phone.Controls 和 Microsoft.Phone.Shell 中找到 Windows Phone 的 Windows 8 等效控件,而 System.Windows.Controls 包含 Windows 8 控件和一些共享控件。 幸运的是,XAML 编辑器将在您尝试添加不支持的控件时警告您。但是,XAML 不支持条件编译,因此无 法轻松地在运行时为一个平台或另一个平台加入命名空间。
XAML 控件:每个控件库均为其对应的平台进行了优化。因此,强烈建议分别为每 个平台自行设计用户控件。这样将帮助在每个平台上保持一致的 UX,同时降低因出错而迁移 XAML 的可 能性。图 2 显示一些基本控件。
图 2:Windows Phone 8 和 Windows 8 基本控件