【问题标题】:How easy is it to port a Windows Phone 7 application to Metro on a Windows 8 tablet?将 Windows Phone 7 应用程序移植到 Windows 8 平板电脑上的 Metro 有多容易?
【发布时间】:2011-09-15 10:18:22
【问题描述】:

我知道两个平台上的 Metro 共享一个共同的“外观和感觉”,并且 WinRt 使用 XAMLand C#(或 VB.NET),就像 Windows Phone 7 上的 Silverlight 一样。

不过我也知道 WinRT 不是 Silverlight。

因此,创建可在 Windows 8 平板电脑和 Windows 7(或 7.5)手机上运行的应用程序的过程是什么?

WinRt 与 Silverlight 有多接近?

【问题讨论】:

    标签: silverlight windows-phone-7 windows-8 microsoft-metro windows-runtime


    【解决方案1】:

    尽管微软的某些人声称它只需要更改几行代码...

    对于移植应用程序的难度,唯一可能的答案是IT DEPENDS!

    • 电话应用程序有什么作用?
    • Win8 上还有多少功能可用?
    • 在 Win8 上不能做同样的事情时应该怎么做?
    • Win8 版本还应该添加什么(如果有的话)?
    • 与手机相比,您打算如何处理 Win8 上的额外屏幕空间?
    • 您是否在一个上使用了另一个上不存在的控件或 UI 元素?
    • 等等,....

    相似之处是:

    • 都使用 XAML
    • 两者都可以使用相同的编程语言编写代码(可能是 C#)
    • Win8 上“metro 风格”应用的设计灵感来自 Metro(WP7 的设计语言)

    除此之外,它将取决于应用程序。

    您无法创建可以同时在两者上运行的应用。至少您需要重新编译,因为这 2 个平台需要针对不同版本的 .net 框架。

    更新:
    微软提供了一些早期的guidance on making such a port。它包括一些命名空间和 API 映射。

    【讨论】:

    【解决方案2】:

    看看 API,忽略用户体验的差异,我想说:不难,但也不是微不足道的。或者,另一种方式,比从 WPF 到 Silverlight 更困难,但比从 WinForms 到 WPF 困难。

    • 大多数 WP/Silverlight 控件(减去轴心/全景图)都存在,但它们存在 different namespace
    • 其他功能(如应用间通信和状态管理)的工作方式似乎完全不同。

    【讨论】:

    • 我认为从 WPF 到 Silverlight 实际上更加不同。 Silverlight 中完全不支持更多 WPF 功能(例如可扩展标记扩展) - 相比之下,调整命名空间和方法的名称是一种简单的解决方法。
    • 我并不是说移植不需要努力,或者功能集匹配 100%。我只是说从 WPF 到 Silverlight 的飞跃要大得多,因为您必须找到解决方法。
    【解决方案3】:

    我遇到的最大潜在问题是,如果您碰巧选择在 Windows Phone 上使用 XNA/Silverlight 进行开发。在这种情况下,您要么必须决定完全重写应用程序,要么尝试使用 XNA 替代品,例如 MonoGame。我自己走了那条路,我可以很高兴地说,至少在这个阶段,MonoGame 似乎支持至少 90% 的 XNA 功能,并且由于一些开发人员和个人的辛勤工作,现在相对容易移植应用程序,而无需太多基本更改。

    这里是 MonoGames 网站http://monogame.codeplex.com/的链接

    【讨论】:

      【解决方案4】:

      如果你熟悉 MVVM 架构,可以这样想:

      • 两个应用程序可以共享相同的视图模型(尤其是如果您选择不让视图模型了解视图的任何信息)
      • 您创建了一个特定于操作系统的视图,一个用于 Windows Phone 的现有视图和一个用于 Windows 8 的新视图,并绑定到同一个视图模型。
      • 您可以使用您选择的编译器指令、应用程序配置、分离的外壳/引导程序等来相应地加载视图。
      • 如果您使用特定于平台的任何东西,您可能需要将一些编译器指令引入您的视图模型和其他非视图库。

      遵循这些指令,您可以获得非常特定于平台的用户体验,但代码库非常统一。

      我希望除了您已经从其他人那里得到的很好的答案之外,这还可以为您提供有价值的信息。

      【讨论】:

        【解决方案5】:

        【讨论】:

          【解决方案6】:

          这个答案与 WP7 和 SL 相同。

          在 1 到 10 的范围内,最多是 6 或 7。

          不幸的是,WinRT 不是 .Net 框架。那就是 WP7 和 SL。

          话虽如此,如果 WP7 W8 是 7,WP8 是 9.9!

          顺便说一句,你永远不会得到 100%。至少,不同的外形尺寸需要不同的 XAML。

          请记住,使用 MVVM 进行设计!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-08-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多