成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何將Windows Phone應用移植到Windows 8平臺

譯文
移動開發
相對而言,使用C++、C#或Visual Basic將Microsoft Silverlight應用從Windows Phone移植至Metro風格應用是非常容易的,本文主要關注的是Windows Phone應用的移植。

【51CTO譯文】相對而言,使用 C++、C# 或 Visual Basic將 Microsoft Silverlight 應用從 Windows Phone 移植至 Metro風格應用是非常容易的。大部分的工作內容,所需的知識以及體驗,將轉向使用 XAML 的 Metro風格應用的模型,許多 XAML 界面設計與布局也是如此。

應用移植工作主要包含兩部分:

◆修改 UI,利用Windows Metro 風格 UI 的功能與設計指南;

◆從代碼隱藏文件中調用的Silverlight API 轉向相應的 Windows Runtime API。

很多情況下,代碼保持不變,或幾乎不變。雖然存在一些差別,但 Windows Runtime 中基于 XAML 的 UP API 是在 Windows Phone 版本的 Silverlight 上進行建模。另外,可使用 Metro 風格的 .NET API,這是完整的 .NET Framework 的子集,與.NET Framework for Silverlight 類似。在某些情況下,類似的.NET API已轉移到Windows Runtime,只是設計有稍許不同。

成功移植應用所需的工作量主要取決于:應用是否使用了大量 API,而這些 API 并未包含在 Metro 風格應用的 Windows Runtime 和 .NET API。本文提供了一些常規的移植指南與資源,用于定位 API 并確定多少代碼必須進行替換。

本文主要關注的是 Windows Phone 應用的移植,不過,對于任何 .NET 和基于XAML 的項目,可在以下主題中找到有用的相關信息:

將Silverlight 或 WPF XAML/代碼移植到Metro風格應用

Metro風格應用.NET概述

Windows Phone 7應用移植準備工作

在進行 Windows Phone 7 應用移植之前,請考慮以下相關事項:

◆是否需要對應用進行快速移植或獲得更佳的可維護性?“提高可維護性”部分提供了一些技巧,可用于對項目進行單源處理,并且有助于針對不同平臺的項目間代碼再利用。

◆Windows Phone 7 設備分辨率在水平模式在為水平模式下為800x480 (WVGA),垂直模式下為480x800。Windows 8 Release Preview 設備可具有多種長寬比,多種可能的水平與垂直分辨率。界面與資產如何進行擴展?相關信息

◆Windows Phone 7 界面為觸摸式的。Windows 8 界面也應支持觸摸,同時還需支持其他輸入方式,如鼠標和鍵盤。對于某些未使用觸摸的用戶,你的界面是否感覺很笨拙?無論何種輸入方式,如何保持應用的可用性?相關信息,請參閱“可訪問性計劃”。

◆Windows Phone 7 應用中是否具有手機專業的功能?想法了解Windows Runtime 中相對應的網絡技術?如果對手機或提供商提供更多功能支持,那么可能需對其進行重新開發,提供更多的網絡或提供商獨立性。

◆游戲應用是否依賴用于圖形渲染的 Microsoft XNA 組件?如果是,對于 Windows 8 應用無法使用 XNA。另外,對于托管代碼,無法有效地使用 DirectX;如果未使用第三發托管 API,那么必須使用 C++ 進行 DirectX 游戲開發。有關更多信息,請參閱“創建DirectX游戲”。

常規移植過程

如果為了優化上市時間,需快速移植應用,請遵循以下步驟:

1.打開 Microsoft Visual Studio Express 2012 RC for Windows 8,使用C++、C# 或 Visual Basic 新建 Metro 風格應用。選擇應用布局與功能最為匹配的項目模板。有關更多信息,請參閱“使用模板(C++、C#、Visual Basic)快速創建 Metro 風格應用”。

2.復制想要在新項目中再利用的文件夾、代碼與資產文件。

3.在 Visual Studio 的“解決方案瀏覽器”(Solution Explorer),單擊“顯示所有文件”(Show All Files)。

4.選擇已復制的文件與文件夾,然后右鍵單擊并選擇“包含在項目中”(Include In Project)。

5.執行全局搜索與替換,將“System.Windows”替換為“Windows.UI.Xaml”。

6.將原始 XAML 代碼中可重用部分復制到新項目的 XAML 文件,或新建的 XAML 文件(如需要)。通常,頁面布局根(典型的示例:Grid 元素)可進行復制并重用,而最外層元素(如 PhoneApplicationPage 元素)并非如此。

7.構建項目,生成錯誤,然后這些錯誤找到需進行更新或替換的代碼。有時,所需的這種更新非常少,只是對參數類型進行更改。但有些更新需要使用 Metro style 所用的 Windows Runtime API 替代 .NET API。為了確認支持哪些 API,可使用本文與“Metro 風格應用 .NET 概述”以及“將 Silverlight 或 WPF XAML/代碼移植到 Metro 風格應用”,獲取相關指南。

8.對于任何無法輕易進行更新的代碼,請進行評注或清除,直到項目構建。

9.一次對評注代碼的一個問題進行更新或替換,直到移植完成。

#p#

提高可維護性

為了多個平臺上的應用維護變得更加容易,請考慮使用以下技巧:

◆在移植之前,請對代碼進行重構,使其盡可能可重用。尤其,通過應用設計模式,如將業務邏輯與 UI 邏輯分開的Model-View-ViewModel (MVVM),可避免 UI API 差異方面的問題。使用 MVVM,模型與視圖模型代碼在不同平臺上可保持大部分不變,同時視圖代碼(XAML)可根據平臺定制。

◆在項目之間共享可重用代碼文件,而不是維護針對不同平臺的多個副本。如需在 Visual Studio 中進行此類操作,請“解決方案瀏覽器”(Solution Explorer)中右鍵單擊該項目,選擇“添加已有項”(Add Existing Item),選擇共享文件,然后單擊“添加為鏈接”(Add As Link)。

◆如需在共享文件中包含某些平臺專用代碼,請使用條件編譯。這種方式僅適用于 C#、C++ 和 Visual Basic 代碼。對于 XAML,必須對分開的代碼文件進行分別維護。

◆使用 Portable Class Library 創建跨平臺的庫程序集。該可移植類庫包含 .NET Framework for Silverlight、Metro 風格應用 .NET API 和完整的 .NET Framework 中可用 .NET API 的子集。可移植類庫是與全部三個平臺兼容的二進制文件,因此對于代碼重用是最為簡單的方式。不過,為了創建針對可移植類庫的項目,必須使用 Microsoft Visual Studio Professional 2012 RC 或更高版本。

#p#

移植用戶界面

Silverlight 的大多數布局類型,如CanvasGridStackPanel,在 Windows Runtime XAML 命名空間里也會出現。雖然為了適應多種高于 800x480 的分辨率,Grid 和布局設置需要進行調整,但基本用戶界面結構的移植應是直接式的。

當然,手機 UI 可能專門為小屏幕手機而設計。簡單地對其繼續擴展并非最佳設計,應根據 Metro 風格應用的功能以及 Windows 8 設備的多種形狀因素對 UI 進行重構。這種功能之一為分屏視圖(snapped view),對此手機 UI 設計可能是有用的。

更多信息與設計指南,請參閱以下主題:

制作優秀的 Metro 風格應用

多種形狀因素計劃

支持多種視圖

用戶體驗設計

用戶界面指南

使用設計清單

對定義應用布局的 XAML 文件進行調整之后,需要更新隱藏代碼,以使用 Windows Runtime API 替代 Silverlight API。對于用戶界面元素,在兩個 API 庫之間存在相當一致的映射。

以下為 Windows Runtime XAML 命名空間,大體上與對應的 Silverlight 用戶界面命名空間等同。

Silverlight XAML 命名空間 Windows Runtime XAML 命名空間
System.Windows Windows.UI.Xaml
System.Windows.Automation Windows.UI.Xaml.Automation
System.Windows.Automation.Peers Windows.UI.Xaml.Automation.Peers
System.Windows.Automation.Provider Windows.UI.Xaml.Automation.Provider
System.Windows.Automation.Text Windows.UI.Xaml.Automation.Text
System.Windows.Controls Windows.UI.Xaml.Controls
System.Windows.Controls.Primitives Windows.UI.Xaml.Controls.Primitives
System.Windows.Data Windows.UI.Xaml.Data
System.Windows.Documents Windows.UI.Xaml.Documents
System.Windows.Input Windows.UI.Xaml.Input
System.Windows.Interop Windows.UI.Xaml.Interop
System.Windows.Markup Windows.UI.Xaml.Markup
System.Windows.Media Windows.UI.Xaml.Media
System.Windows.Media.Animation Windows.UI.Xaml.Media.Animation
System.Windows.Media.Imaging Windows.UI.Xaml.Media.Imaging
System.Windows.Media.Media3D Windows.UI.Xaml.Media.Media3D
System.Windows.Navigation Windows.UI.Xaml.Navigation
System.Windows.Printing Windows.UI.Xaml.Printing
System.Windows.Resources Windows.UI.Xaml.Resources
System.Windows.Shapes Windows.UI.Xaml.Shapes

請注意,以下 Silverlight XAML 命名空間在 Windows Runtime 中不具有直接的對等項:

◆System.Windows.Ink

◆System.Windows.Media.Effects

◆System.Windows.Messaging

#p#

使用 XAML 的Silverlight 與 Metro 應用之間的不同

雖然對于 Windows Phone 7 和 Windows 8,Metro 風格 UI 是相同的,但在兩個平臺的 UI 的功能之間還存在一些差異。以下部分對其中一些關鍵的不同進行了描述。不過,為了確定具體支持哪些功能,應查詢 API 引用。更多關于使用 XAML 的 Metro 風格應用信息,請參閱“采用 C# 或 Visual Basic 的 Metro 風格應用的路線圖”。

控件與布局

Windows Runtime 中的 XAML 控件是基于 Silverlight 控件的,但可能存在一些差異或缺少某些功能。例如:

Windows Runtime 未包含 Silverlight for Windows Phone 中提供的 Pivot 和 Panorama 控件。這些控件專門為手機形狀因素而設計,有助于提升比手機屏更大屏幕上的用戶體驗。Metro 風格應用通常具有更大的屏幕空間,并且應利用具有更大靈活性的 Grid 控件的優勢。另外,還可以使用 FlipView 控件來提供簡潔的翻頁體驗。

Windows Runtime 中的 AppBar 控件提供的體驗與手機 ApplicationBar 類似,不過具有更多的靈活性,支持定制布局與數據綁定。

Windows Phone 可聲明支持何種設備旋轉方式,因此能夠對必需的布局靈活性進行限制。對于 Metro 風格應用,UI 設計應不受設備選擇方式與屏幕尺寸的限制。

更多關于控件的信息,請參閱“功能控件”。

磁貼與通知

Metro 風格應用的磁貼與 Windows Phone 7 的動態磁貼(Live Tile)類似,不過還存在一些差異。更多有關使用 C++、C# 或 Visual Basic 的 Metro 風格應用中的磁貼使用,請參閱創建磁貼

通知是 Windows Phone 7 中推送通知模型的擴展。更多 Metro 風格應用中通知使用的詳細信息,請參閱發送消息條通知

在使用C++、C# 或 Visual Basic 的 Metro 風格應用中使用磁貼、消息條和通知的更多信息與教程,請參閱使用磁貼、徽章和消息條通知

數據應用場景

Metro 風格應用目前不包含對數據密集型應用場景(如業務線)的內置支持。例如,沒有用于客戶端 SQL 的 API 并且沒有本地數據庫。但是,利用定制服務與 OData 調用,仍然可從網絡對數據進行檢索,并且利用客戶端 LINQ 可對數據進行形狀與格式化處理,同時可利用基于 XAML 控件可進行綁定。

數據綁定大部分保持不變。例如,可部署 INotifyPropertyChanged 和 INotifyCollection,可相應地接收更改通知與更新 UI。但是,Metro 風格應用的數據相關功能當前還存在以下限制:

◆對數據項驗證和 IDataErrorInfo 和 INotifyDataErrorInfo 接口,未提供內置支持。

◆Binding 類未包含 Silverlight 中可用的擴展格式化屬性。但是,仍可部署 IValueConverter 已提供定制格式化。

◆IValueConverter 方法將語言字符串作為參數而不是 CultureInfo 對象。

◆CollectionViewSource 類未對于工作的排序、過濾和分組分別提供內置支持。更多信息,請參閱“使用 XAML 進行數據綁定”和“數據綁定示例”。

導航

為了與平臺進行集成以及利用硬件“后退”按鍵,Silverlight for Windows Phone 應用需要使用基于頁面的導航結構。對于 Metro 風格應用,提供了類似的導航架構,但是由于平臺的要求不同,存在一些差異:

◆在 Metro 風格應用中導航至某個頁面時,并未使用 URI 尋址方案,而是指定目標頁面的類型,在該頁面 XAML 定義的x:Class屬性中顯示。另外,還可以選擇性地傳遞參數對象。

◆Metro 風格應用的導航框架不支持框架導航、日記(Back 堆棧)修訂和 URI 映射。

更多信息,請參閱快速入門:頁面間導航

#p#

將 Windows Phone 7 API 映射至 Windows Runtime API

下表提供 Windows Phone 7 專用 API 與 Windows Runtime API 之間的粗略映射。該表不表示一對一的功能映射;任何平臺提供的功能與對應平臺都或多或少存在一些差異。

API 類型 Silverlight API 命名空間 Windows Runtime API 命名空間
設備 Microsoft.Devices,
Microsoft.Devices.Radio, Microsoft.Devices.Sensors
Windows.Devices.Enumeration, Windows.Devices.Enumeration.Pnp, Windows.Devices.Input, Windows.Devices.Sensors
Windows Phone 應用模型與環境 Microsoft.Phone, Microsoft.Phone.Info, Microsoft.Phone.Notification, Microsoft.Phone.Reactive,
Microsoft.Phone.Shell,
Microsoft.Phone.Tasks
Windows.Networking.PushNotifications, Windows.Devices.Sms, Windows.ApplicationModel.Background, Windows.ApplicationModel.Contacts, Windows.ApplicationModel.Contacts.Provider, Windows.ApplicationModel.Core
映射 Microsoft.Phone.Controls.Maps, Microsoft.Phone.Controls.Maps.AutomationPeers, Microsoft.Phone.Controls.Maps.Core Microsoft.Phone.Controls.Maps.Design Microsoft.Phone.Controls.Maps.Overlays, Microsoft.Phone.Controls.Maps.Platform Windows.Devices.Geolocation
商城 Microsoft.Phone.Marketplace Windows.ApplicationModel.Store
網絡與聯合 Microsoft.Phone.Net, Microsoft.Phone.Net.NetworkInformation Windows.Networking, Windows.Networking.BackgroundTransfer, Windows.Networking.Connectivity, Windows.Networking.NetworkOperators, Windows.Networking.Sockets, Windows.Web.AtomPub, Windows.Web.Syndication
編程與數據模型 System Windows.Foundation, Windows.Foundation.Collections, Windows.Foundation.Metadata, Windows.Data.Xml.Dom, Windows.Data.Xml.Xsl,
Windows.Data.Json
位置 System.Device.Location Windows.Devices.Geolocation, Windows.Networking.Proximity
自動化與診斷 System.Diagnostics, System.Windows.Automation.Peers Windows.Foundation.Diagnostics
圖形(3D 轉換) XNA Framework Class Library,
Content Pipeline Class Library
No equivalent at this time.
控件與UI 基礎結構

Microsoft.Phone.Controls,
Microsoft.Phone.Controls.Primitives

Windows.UI.ApplicationSettings, Windows.UI.Core,
Windows.UI.Input,
Windows.UI.Notifications, Windows.UI.ViewManagement
存儲 System.IO.IsolatedStorage class Windows.Storage, Windows.Storage.FileProperties

 

責任編輯:王曉東 來源: 51CTO.com
相關推薦

2011-09-09 09:17:41

Windows 8平板Windows Pho微軟

2011-05-04 09:29:22

2015-05-05 13:57:12

AndroidWindows

2011-06-17 10:04:56

Windows PhoWindows Pho微軟

2012-02-20 23:12:45

Windows 8Windows Pho同步共享

2015-05-05 10:16:17

AndroidWindows

2011-04-08 10:02:06

日歷Windows Pho

2011-08-09 10:42:24

微軟Windows Pho

2015-08-07 13:23:27

bridgeios應用移植

2012-06-07 09:15:31

Windows 8兼容

2023-06-07 09:00:00

JavaScript開發TypeScript

2011-12-06 10:45:16

云計算應用Windows Pho

2014-08-26 10:01:18

Windows Pho平臺開發指南

2012-06-13 13:46:31

Windows Pho諾基亞地圖

2011-05-31 17:41:38

應用商店Windows Pho諾基亞

2013-09-29 09:06:38

Windows 9WindowsWindows Pho

2013-01-16 11:21:31

Windows Pho應用商店移動開發

2013-09-02 15:49:38

DirectX 9Windows

2010-11-03 15:10:04

SilverlightSilverlightWindows Pho

2012-04-16 16:02:05

Windows Pho跨平臺
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 涩涩片影院 | 成人欧美一区二区三区在线观看 | 日本成人午夜影院 | 亚洲欧美在线观看 | 国产黄视频在线播放 | 91国内精品久久 | 国产精品视频免费看 | 久久久久久成人网 | 91色视频在线观看 | 一区亚洲 | 日本免费一区二区三区 | 日韩三级在线观看 | 韩日视频在线观看 | 男女视频免费 | 中文字幕在线观看成人 | 亚洲福利在线视频 | 日本a视频| 韩日精品在线观看 | 中文字幕在线观看一区 | 国产精品久久久久久影院8一贰佰 | 羞羞的视频免费观看 | 国产亚洲日本精品 | 91成人在线 | 久久精品中文字幕 | 人人做人人澡人人爽欧美 | www精品美女久久久tv | 精品伦精品一区二区三区视频 | 亚洲女人的天堂 | 精品美女视频在线观看免费软件 | 亚洲视频三区 | 操操日 | 在线播放国产视频 | 国产免费一区二区 | 羞羞视频免费观看 | 中文字幕av在线 | 久久久久国产视频 | 久久成人av电影 | 久久人爽 | 欧一区 | 夜夜爽99久久国产综合精品女不卡 | 欧美日韩高清一区二区三区 |