Windows 8 XAML对象和Snapped View

时间:2013-01-06 00:42:29

标签: c# xaml windows-8 microsoft-metro winrt-xaml

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

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

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

希望这很清楚。感谢。

1 个答案:

答案 0 :(得分:7)

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

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

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

enter image description here

然后通过将可视状态切换为 Snapped 并打开启用状态记录,我对布局进行了更改:

enter image description here

在运行时,应用程序在两种状态中都显示如下。不需要代码 - 当应用程序的方向发生变化时,VisualStates之间的LayoutAwarePage切换会处理所有代码。

enter image description here

enter image description here