如何在W10

时间:2015-06-19 15:06:06

标签: c# xaml windows-runtime win-universal-app windows-10

我即将开始将我的WP8.1应用程序移植到W10,看起来我必须将它变为通用Windows应用程序。现在,我对后端代码很好,因为我将能够重用90%的类(模型,ViewModel和我的大多数辅助类,扩展方法和转换器)。

问题出在UI上:我明白我必须为不同的屏幕和方面口粮设计应用程序,我不知道如何在代码中实际实现它。 我的意思是,对于UI缩放,我知道我可以使用VisualStateManager和AdaptiveTriggers手动设置我想要适应任何屏幕分辨率的UI元素的属性,或者我可以使用一些转换器,这很好。

Whan我的意思是:什么是使整个UI适应不同分辨率的最佳方法?

这是一个例子:

People app on Windows 10

如您所见:整个导航模式在不同的屏幕上沿着UI发生变化。在手机上,我们有覆盖整个用户界面的联系页面,而在平板电脑和个人电脑上,我们的联系页面只是用户界面的一小部分,而枢轴页面则移动到右侧的另一个面板中。此外,许多UI元素都完全重新排列。 当然,一些视图级后端代码也会发生变化。

现在,我想知道做这件事的最佳方法是什么。

我应该:

•拥有一个包含大量VisualStates和内容的单个XAML文件(针对每个页面),并尝试为每个屏幕分辨率重新排列UI

•与共享项目(如W8.1通用应用程序)有不同的项目,以便我可以专注于每个特定设备上的UI吗?这是我更熟悉的方法,因为我能够毫无问题地设计特定于平台的UI元素。尽管如此,我还是不明白如何在VS2015中为每种设备类型实际创建共享项目和不同的项目。

•将该方法与共享相同代码隐藏文件的不同XAML页面一起使用(即使我不确定如何实现它,以及如何实现特定于平台的代码隐藏部分)。

•其他一些方法

我的意思是,我确定我不是唯一遇到麻烦的W8.1 / WP8.1开发人员,我可以使用某种建议吗?我已经观看了有关W10开发的所有MVA视频,但他们没有深入了解那里的实现细节。

感谢您的帮助

塞尔吉奥

2 个答案:

答案 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 ControlRelativePanel Control,那么这两个截图不一定会有所不同。

有关详细信息,请参阅this //build talk