C# Windows 8 XAML对象和快照视图

C# Windows 8 XAML对象和快照视图,c#,xaml,windows-8,microsoft-metro,winrt-xaml,C#,Xaml,Windows 8,Microsoft Metro,Winrt Xaml,因此,我制作了一个应用程序,并设置了布局,使其在纵向模式下看起来正常。对于快照视图,我创建了一个包含相同对象的不同实例的ListView。此ListView最初会折叠,然后当它更改为“已捕捉”时,ListView将可见,纵向模式对象将折叠 这很好,但由于它们是两组不同的对象,因此会扰乱用户体验。如果他们以纵向模式将文本输入框中,然后切换到“快照视图”,则所有文本都将消失(正如他们将文本放入现在已折叠的文本框中一样) 问题是,是否可以更改元素的位置/大小,使它们成为位于不同位置的相同对象,这取决于

因此,我制作了一个应用程序,并设置了布局,使其在纵向模式下看起来正常。对于快照视图,我创建了一个包含相同对象的不同实例的ListView。此ListView最初会折叠,然后当它更改为“已捕捉”时,ListView将可见,纵向模式对象将折叠

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

问题是,是否可以更改元素的位置/大小,使它们成为位于不同位置的相同对象,这取决于我们是否处于捕捉模式


希望这是清楚的。谢谢。

是的,事实上,该功能内置于
LayoutAwarePage
类中,这是向项目中添加基本页面(相对于空白页面)时得到的类型。如果从网格或拆分应用程序模板开始,提供的页面同样会扩展
LayoutAwarePage

这些页面有一些样板XAML,它利用并定义各种应用程序布局的状态。您可以做的是为全横向模式设计布局,然后使用记录对布局的更改(位置、颜色等),以进行快照、填充和纵向

例如,这里有一个处于横向模式的简单UI:

然后,通过将视觉状态切换到“捕捉”,并打开“启用状态录制”,我对布局进行了更改:

在运行时,应用程序在这两种状态中的每种状态下都类似于以下内容。无需任何代码-随着应用程序方向的改变,所有这些都由
LayoutAwarePage
在可视状态之间切换来处理


谢谢您的回答!在启用“启用状态录制”的同时,我尝试将XAML对象添加到列表视图中,但它不允许我这样做,给出了错误“录制到情节提要或属性触发器时,您可能无法更改场景的父子结构。”我可以只移动对象的位置,但是,如果它对于抓拍的屏幕来说太长,这将不允许它滚动。你知道一种实现自动移动的方法吗?它可以上下滚动?谢谢。你可以从一开始就把元素放在ScrollViewer的StackPanel中,但我会小心使用滚动,尤其是垂直滚动(除非它类似于项目列表)。我的一个页面似乎有问题。我无法在不同的页面状态之间进行选择。页面继承自LayoutWarePage,并且在XAML中创建了不同的ApplicationViewState,如下所述。我似乎不明白为什么它不起作用,它在我的另一个页面上也起了作用。你知道先检查什么吗?我设法“修复”了它。出于某种原因,它希望XAML位于顶部,就在
的下方,尽管在另一个文件中它确实工作,但它位于底部。这很奇怪,因为当我在Blend中转到States面板并尝试添加一个名为“ApplicationViewStates”的状态时,它一直将其重命名为“ApplicationViewStates1”,因此它知道那里已经存在一个状态。