Windows 8 XAML对象和Snapped View

Luk*_*uke 3 c# xaml microsoft-metro windows-8 winrt-xaml

所以我制作了一个应用程序并设置了布局,使其在纵向模式下显示正常.对于捕捉的视图,我创建了一个ListView,它包含相同对象的不同实例.此ListView最初是折叠的,然后当它更改为捕捉时,列表视图变为可见,并且纵向模式对象变为折叠状态.

这很好用,但由于它们是两组不同的对象,因此会影响用户体验.如果他们以纵向模式将文本输入到框中,然后切换到捕捉视图,则所有文本都将消失(因为它们将它放在现在折叠的文本框中).

问题是是否可以只改变元素的位置/大小,使它们只是在不同的地方是相同的对象,这取决于我们是否处于捕捉模式?

希望这很清楚.谢谢.

Jim*_*eil 7

是的,实际上,该功能是内置于LayoutAwarePage类中的,这是在向项目添加基本页面(与空白页面)时获得的页面类型.如果您从Grid或Split App模板开始,则提供的页面同样会扩展LayoutAwarePage.

这些页面有一些样板XAML,它利用VisualStateManager并定义各种应用程序布局的状态.您可以做的是为完整横向模式设计布局,然后使用" 设备"窗口记录对"捕捉","填充"和"纵向"的布局(放置,颜色等)的更改.

例如,这是横向模式下的简单UI:

在此输入图像描述

然后通过将Visual状态切换为Snapped启用Enable State Recording,我对布局进行了更改:

在此输入图像描述

在运行时,应用程序在两种状态中的每一种状态下都如下所示.无需代码 - LayoutAwarePage当应用程序的方向发生变化时,通过在VisualStates之间切换来处理所有代码.

在此输入图像描述

在此输入图像描述