偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

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

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

◆從代碼隱藏文件中調(diào)用的Silverlight API 轉(zhuǎn)向相應的 Windows Runtime API。

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

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

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

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

Metro風格應用.NET概述

Windows Phone 7應用移植準備工作

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

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

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

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

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

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

常規(guī)移植過程

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

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

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

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

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

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

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

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

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

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

#p#

提高可維護性

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

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

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

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

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

#p#

移植用戶界面

Silverlight 的大多數(shù)布局類型,如Canvas、GridStackPanel,在 Windows Runtime XAML 命名空間里也會出現(xiàn)。雖然為了適應多種高于 800x480 的分辨率,Grid 和布局設置需要進行調(diào)整,但基本用戶界面結(jié)構(gòu)的移植應是直接式的。

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

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

制作優(yōu)秀的 Metro 風格應用

多種形狀因素計劃

支持多種視圖

用戶體驗設計

用戶界面指南

使用設計清單

對定義應用布局的 XAML 文件進行調(diào)整之后,需要更新隱藏代碼,以使用 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 的功能之間還存在一些差異。以下部分對其中一些關(guān)鍵的不同進行了描述。不過,為了確定具體支持哪些功能,應查詢 API 引用。更多關(guān)于使用 XAML 的 Metro 風格應用信息,請參閱“采用 C# 或 Visual Basic 的 Metro 風格應用的路線圖”。

控件與布局

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

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

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

Windows Phone 可聲明支持何種設備旋轉(zhuǎn)方式,因此能夠?qū)Ρ匦璧牟季朱`活性進行限制。對于 Metro 風格應用,UI 設計應不受設備選擇方式與屏幕尺寸的限制。

更多關(guān)于控件的信息,請參閱“功能控件”。

磁貼與通知

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

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

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

數(shù)據(jù)應用場景

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

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

◆對數(shù)據(jù)項驗證和 IDataErrorInfo 和 INotifyDataErrorInfo 接口,未提供內(nèi)置支持。

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

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

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

導航

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

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

◆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 應用模型與環(huán)境 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
網(wǎng)絡與聯(lián)合 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
編程與數(shù)據(jù)模型 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 轉(zhuǎn)換) XNA Framework Class Library,
Content Pipeline Class Library
No equivalent at this time.
控件與UI 基礎(chǔ)結(jié)構(gòu)

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
相關(guān)推薦

2011-09-09 09:17:41

Windows 8平板Windows Pho微軟

2011-05-04 09:29:22

2011-06-17 10:04:56

Windows PhoWindows Pho微軟

2015-05-05 13:57:12

AndroidWindows

2012-02-20 23:12:45

Windows 8Windows Pho同步共享

2011-04-08 10:02:06

日歷Windows Pho

2015-05-05 10:16:17

AndroidWindows

2012-06-07 09:15:31

Windows 8兼容

2011-08-09 10:42:24

微軟Windows Pho

2015-08-07 13:23:27

bridgeios應用移植

2014-08-26 10:01:18

Windows Pho平臺開發(fā)指南

2023-06-07 09:00:00

JavaScript開發(fā)TypeScript

2012-06-13 13:46:31

Windows Pho諾基亞地圖

2011-12-06 10:45:16

云計算應用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應用商店移動開發(fā)

2013-09-02 15:49:38

DirectX 9Windows

2012-03-16 21:25:14

Windows Pho

2012-04-16 16:02:05

Windows Pho跨平臺
點贊
收藏

51CTO技術(shù)棧公眾號