在Windows 8平板电脑上将Windows Phone 7应用程序移植到Metro有多容易?

10
我知道Metro在两个平台上都拥有共同的“外观和感觉”,而WinRT使用XAML和C#(或VB.NET),就像Silverlight在Windows Phone 7上一样。
但是,我也知道WinRT并不是Silverlight。
因此,如何创建可以在Windows 8平板电脑和Windows 7(或7.5)手机上运行的应用程序?
WinRT与Silverlight有多接近?
6个回答

20
尽管微软的某些人声称只需要更改几行代码,但移植应用程序的难度取决于以下因素:
  • 电话应用程序的功能是什么?
  • Win8上有多少相同的功能?
  • 在Win8上无法执行相同操作时该怎么办?
  • 如果需要,在Win8版本中还需要添加什么(如果有)?
  • 与手机相比,您将如何处理额外的屏幕空间?
  • 是否在一个平台上使用了另一个平台上不存在的控件或UI元素?
  • 等等...

两者都使用XAML,都可以使用相同的编程语言(可能是C#),并且Win8上的“Metro样式”应用程序设计灵感来自WP7的Metro设计语言。除此之外,一切都取决于应用本身。

您不能创建可同时运行的应用程序。至少需要重新编译,因为两个平台需要针对不同版本的.net框架。

更新:
微软提供了一些早期阶段的指导,以进行此类移植。它包括一些名称空间和API映射。


1
很棒的回答。您可能还会发现我最近的博客文章有用,其中详细介绍了开发跨平台Silverlight / WinRT应用程序:http://www.scottlogic.co.uk/blog/colin/2011/09/tweetsearch-a-cross-platform-metro-ui-winrt-and-silverlight-application/ - ColinE

4
看着API,忽略用户体验的差异,我会说:不难但也不是小菜一碟。或者换句话说,比从WPF转到Silverlight更困难,但比从WinForms转到WPF更容易。
  • 大多数WP/Silverlight控件(除了枢轴/全景)存在,但它们存在于不同的命名空间中。
  • 其他功能,如应用程序间通信和状态管理,似乎完全不同。

我认为从WPF转向Silverlight实际上更加不同。在Silverlight中,有许多WPF功能是完全不支持的(例如可扩展标记扩展),相比之下,调整命名空间和方法名称只是一个微不足道的解决方法。 - Pavel Minaev
我并不是说转移不需要花费精力,也不是说功能集能够100%匹配。我只是在说相对于你需要找解决方法来弥补失去的功能数量而言,从WPF到Silverlight的跨越要大得多。 - Pavel Minaev

2
我经历的最大潜在问题是,如果您选择在Windows Phone上使用XNA / Silverlight进行开发。在这种情况下,您必须决定完全重写应用程序或尝试使用XNA替代品,例如MonoGame。我自己走过那条路,可以高兴地说,至少在这个阶段,MonoGame似乎支持至少90%的XNA功能,并且由于几个开发人员和团队的辛勤工作,现在相对容易地将应用程序移植过来,而不需要太多基本更改。
这是MonoGame网站的链接:http://monogame.codeplex.com/

1
如果您熟悉MVVM架构,可以这样考虑:
  • 两个应用程序可以共享相同的视图模型(特别是如果您选择了不让视图模型知道任何关于视图的信息的设计选择)
  • 您创建一个特定于操作系统的视图,一个是Windows Phone已经拥有的,另一个是Windows 8的新视图,并绑定到相同的视图模型。
  • 您使用编译器指令、应用程序配置、分离的外壳/引导程序等方式相应地加载视图。
  • 如果您使用任何平台特定的内容,可能需要向视图模型和其他非视图库引入一些编译器指令。
遵循这些指令,您可以拥有非常具体于平台的用户体验,但却有一个非常统一的代码库。
我希望这为您提供了有价值的信息,除了其他人已经给出的很好的答案。

1

0

这个答案对于WP7和SL是一样的。

从一到十的评分来说,最多只能给六或七分。

不幸的是,WinRT并不是.Net框架。而这也适用于WP7和SL。

话虽如此,如果WP7与W8相比得分是7,那么WP8与W8相比得分就是9.9!

顺便说一句,你永远不可能达到100%。不同的形态因素需要不同的XAML,至少如此。

记住,使用MVVM进行设计!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接