我即将开始将我的WP8.1应用程序移植到W10,看起来我必须将它变为通用Windows应用程序。现在,我对后端代码很好,因为我将能够重用90%的类(模型,ViewModel和我的大多数辅助类,扩展方法和转换器)。
问题出在UI上:我明白我必须为不同的屏幕和方面口粮设计应用程序,我不知道如何在代码中实际实现它。 我的意思是,对于UI缩放,我知道我可以使用VisualStateManager和AdaptiveTriggers手动设置我想要适应任何屏幕分辨率的UI元素的属性,或者我可以使用一些转换器,这很好。
Whan我的意思是:什么是使整个UI适应不同分辨率的最佳方法?
这是一个例子:
如您所见:整个导航模式在不同的屏幕上沿着UI发生变化。在手机上,我们有覆盖整个用户界面的联系页面,而在平板电脑和个人电脑上,我们的联系页面只是用户界面的一小部分,而枢轴页面则移动到右侧的另一个面板中。此外,许多UI元素都完全重新排列。 当然,一些视图级后端代码也会发生变化。
现在,我想知道做这件事的最佳方法是什么。
我应该:
•拥有一个包含大量VisualStates和内容的单个XAML文件(针对每个页面),并尝试为每个屏幕分辨率重新排列UI
•与共享项目(如W8.1通用应用程序)有不同的项目,以便我可以专注于每个特定设备上的UI吗?这是我更熟悉的方法,因为我能够毫无问题地设计特定于平台的UI元素。尽管如此,我还是不明白如何在VS2015中为每种设备类型实际创建共享项目和不同的项目。
•将该方法与共享相同代码隐藏文件的不同XAML页面一起使用(即使我不确定如何实现它,以及如何实现特定于平台的代码隐藏部分)。
•其他一些方法
我的意思是,我确定我不是唯一遇到麻烦的W8.1 / WP8.1开发人员,我可以使用某种建议吗?我已经观看了有关W10开发的所有MVA视频,但他们没有深入了解那里的实现细节。
感谢您的帮助
塞尔吉奥
答案 0 :(得分:2)
这真的取决于你的项目。如果UI没有太大变化,我肯定会使用AdaptiveTriggers。使用非常少的XAML可以做很多事情。如果您还没有:https://github.com/Microsoft/Windows-universal-samples/tree/master/xaml_responsivetechniques
,请查看Microsoft的示例代码如果它发生了巨大的变化,你可以 使用AdaptiveTriggers进行更改,但是拥有多个XAML文件可能更容易。在Win10中执行此操作的新方法是使用DeviceFamily。基本上,只需创建一个名为“DeviceFamily-Mobile”的文件夹,并在其中粘贴具有相同文件名的XAML视图。更多信息:http://sharpgis.net/post/2015/04/01/Creating-DeviceFamily-specific-layouts-in-a-Universal-App
答案 1 :(得分:1)
如果您使用SplitView
Control和RelativePanel
Control,那么这两个截图不一定会有所不同。
有关详细信息,请参阅this //build talk。