所以我制作了一个应用程序并设置了布局,使其在纵向模式下显示正常。对于捕捉的视图,我创建了一个ListView,它包含相同对象的不同实例。此ListView最初是折叠的,然后当它更改为捕捉时,列表视图变为可见,并且纵向模式对象将折叠。
这很好用,但由于它们是两组不同的对象,因此会影响用户体验。如果他们以纵向模式将文本输入到框中,然后切换到捕捉视图,则所有文本都将消失(因为它们将它放在现在折叠的文本框中)。
问题是,是否可以只改变元素的位置/大小,使它们只是位于不同的位置,取决于我们是否处于捕捉模式?
希望这很清楚。感谢。
答案 0 :(得分:7)
是的,事实上,该功能是内置于LayoutAwarePage
类的,这是您在项目中添加基本页面(与空白页面)时获得的Page类型。如果您从Grid或Split App模板开始,则提供的页面同样会扩展LayoutAwarePage
。
这些页面有一些样板XAML,它利用VisualStateManager并定义各种应用程序布局的状态。您可以做的是为完整的横向模式设计布局,然后使用Device window记录对布局(填充,颜色等)的更改,包括“捕捉”,“填充”和“纵向”。
例如,这是横向模式下的简单UI:
然后通过将可视状态切换为 Snapped 并打开启用状态记录,我对布局进行了更改:
在运行时,应用程序在两种状态中都显示如下。不需要代码 - 当应用程序的方向发生变化时,VisualStates之间的LayoutAwarePage
切换会处理所有代码。