博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用C#开发Metro 风格应用的路线图 -- 移植wp7应用到metro上
阅读量:2504 次
发布时间:2019-05-11

本文共 2732 字,大约阅读时间需要 9 分钟。

将wp7应用移植到metro主要做这两方面的工作

  1. 换ui控件,因为silverlight的ui控件不可以直接用在metro上
  2. 换api,silverlight的api同样也不能直接用在windows runtime上

在移植前,需要考虑以下因素

  • 分辨率,wp7统一为480*800,但是win8支持各种分辨率
  • 输入,wp7是触屏,而win8不仅触屏,还支持鼠标,键盘
  • 硬件特性,例如手机通信网络,GSM,3G
  • XNA, win8目前还不支持xna, 而是用directx来做3D

移植流程

  1. 使用vs11建立一个metro工程
  2. 将wp7工程的所有文件全都拷到新工程的目录下,选中“显示所有文件”并且包含在项目中
  3. 将所有的 命名空间 System.Windows 替换为 Windows.UI.Xaml
  4. 修改xaml文件,win8下只有grid可用,而PhoneApplicationPage则不可用了
  5. 编译,根据提示的错误,用windows runtime api 替换 .net api for metro styles

改进可移植性

  • 最好别用一些设计模式,比如MVVM这种分享UI和逻辑的框架,因为有些代码可能是某些平台特有的
  • 将一些可重用的代码分离出来,在项目中以 添加已有项 的方式来加代码,并且在 添加 时选择 以链接方式添加。(在添加的右下角按钮可以选择)
  • 如果在共享文件中有平台特有代码,需要使用条件编译(xaml不支持)
  • 选择 可移植类库 来创建跨平台库

移植UI,这里有一个UI库对应表

Silverlight XAML namespaces Windows Runtime XAML namespaces
System.Windows
System.Windows.Automation
System.Windows.Automation.Peers
System.Windows.Automation.Provider
System.Windows.Automation.Text
System.Windows.Controls
System.Windows.Controls.Primitives
System.Windows.Data
System.Windows.Documents
System.Windows.Input
System.Windows.Interop
System.Windows.Markup
System.Windows.Media
System.Windows.Media.Animation
System.Windows.Media.Imaging
System.Windows.Media.Media3D
System.Windows.Navigation
System.Windows.Printing
System.Windows.Resources
System.Windows.Shapes

 

但是下面几个命名空间在windows runtime上没有对应的

  • System.Windows.Ink
  • System.Windows.Media.Effects
  • System.Windows.Messaging

XAML在Silveright与metro上使用的不同

布局: windows runtime上没有 Pivot 和 Panorama,取而代之的是

    windows runtime上没有 ,,取而代之的是

    一些在屏幕方向上的不同

磁片和通知:大部分都一样,但是有一些细节不同

数据:metro同样没有内建客户端数据库, 更新ui同样是实现和

页面导航:同样是通过后退来导航,但是metro应用导航时不用提供具体的uri地址,只需要指明目标页面的在x:Class的属性里定义的类型即可,但是不支持清栈和uri mapping.

 

关于metro和silverlight的一些api的映射关系如下

API type Silverlight API namespaces Windows Runtime API namespaces (C#/Visual Basic)
Devices Microsoft.Devices, Microsoft.Devices.Radio, Microsoft.Devices.Sensors , , ,
Windows Phone app model and environment Microsoft.Phone, Microsoft.Phone.Info, Microsoft.Phone.Notification, Microsoft.Phone.Reactive, Microsoft.Phone.Shell, Microsoft.Phone.Tasks , , , , ,
Maps 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
Marketplace Microsoft.Phone.Marketplace
Networking and syndication Microsoft.Phone.Net, Microsoft.Phone.Net.NetworkInformation , , , , , ,
Programming and data models System , , , , ,
Location System.Device.Location ,
Automation and diagnostics System.Diagnostics, System.Windows.Automation.Peers
Graphics (3D transforms) , No equivalent at this time.
Controls and UI infrastructure Microsoft.Phone.Controls, Microsoft.Phone.Controls.Primitives, , , , ,
Storage System.IO.IsolatedStorage class ,

    

 

 

 

转载地址:http://zolgb.baihongyu.com/

你可能感兴趣的文章
构建之法 学习笔记02
查看>>
碉堡了!android rom 刷机包可以这么赚钱
查看>>
ASP.NET MVC中的统一化自定义异常处理
查看>>
基于.net的aop实现技术
查看>>
桦仔 笔记7-徐 SQLSERVER日志记录机制
查看>>
下滑线驼峰互转
查看>>
Xcode 快捷键
查看>>
table_open_cache
查看>>
Java中super的几种用法并与this的区别
查看>>
C#利用NPOI操作Excel文件
查看>>
彻底了解指针数组,数组指针,以及函数指针 .
查看>>
浏览器兼容问题【转】
查看>>
python编程 之 PyMysql包接口,python中如何使用数据库
查看>>
WinForm 简单蒙版实现控件遮盖
查看>>
ASP.NET MVC ValueProvider小结
查看>>
ES6之路第二篇:变量的解构赋值
查看>>
iOS6新特征:UICollectionView介绍
查看>>
分享一个基于Bootstrap的 ACE框架 入门(MVC+EF)
查看>>
增量关联规则挖掘—FUP算法
查看>>
spring相关—AOP编程—切入点、连接点
查看>>