我也在使用单声道进行跨平台开发,并且像您和许多其他人一样面临如何处理用户界面和其他底层硬件集成的问题。
我决定我不想受另一个第三方框架的摆布(单声道就足够了),并研究了一个我可以自己构建和维护的解决方案。新的 MVVM 模式和 Expression Blend 真的很酷,但很快你就会发现自己在跨平台开发方面陷入困境。MVC 和 MVP模式似乎也不适合我的需要。最后确定了PM模式并将其扩展为 PMH,其中 H 表示硬件。为了实现我所需要的,我必须将基本小部件(按钮、面板、文本框)抽象为每种设备类型的底层平台层。我的平台层约占我代码库的 1%,并允许我为我所针对的每个设备设置应用程序的皮肤。
对于我的 WP7 解决方案,我几乎不使用任何 HTML,只有大约 25 行,这足以初始化应用程序和主页。用户界面的其余部分以编程方式组合在一起,就像我在 WinForms 中一样。在 WP7 上,我仍然使用 Pivot 控件,因为它确实非常时髦,并且正在为在 Android/iPhone 上使用的类似控件建模。虽然它不会 100% 相同,但它会非常相似,并且在我的核心代码中仍然使用相同的导航引擎。
我的发展还没有完成,但到目前为止,我对自己的进步感到非常满意。我为 Windows 应用程序开发用户界面已经有 20 年了,我从不使用界面构建工具,因为我发现它们从来没有给我想要的东西,真的浪费了我的时间(虽然 Blend 很酷),而且还造成了巨大的代码膨胀特别是在混合中。