2013-01-06 155 views
3

所以我制作了一个应用程序并设置了布局,以便在纵向模式下显示正常。对于快照视图,我创建了一个包含相同对象的不同实例的ListView。这个ListView最初是折叠的,然后当它改变为快照时,ListView变为可见,并且肖像模式对象变为折叠状态。Windows 8 XAML Objects和Snapped View

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

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

希望这是明确的。谢谢。

回答

7

是的,事实上,该功能是内置于LayoutAwarePage类的,这是您向项目添加基本页面(与空白页面)时获得的Page类型。如果您开始使用网格或分割应用程序模板,则所提供的页面同样会扩展为LayoutAwarePage

这些页面有一些样板XAML,它利用了VisualStateManager并为各种应用程序布局定义了状态。你可以做的是为全景模式设计你的布局,然后使用Device window来记录对你的布局(位置,颜色等)的更改捕捉,填充和肖像的变化。

例如,这里有一个简单的用户界面在横向模式下:

enter image description here

然后通过切换视觉状态并打开启用状态记录,我修改了布局:

enter image description here

在运行时,应用程序在两种状态中的每种状态下看起来如下所示。无需代码 - 全部由LayoutAwarePage在应用程序的方向发生变化时在VisualStates之间切换。

enter image description here

enter image description here

+1

谢谢你的回答!我尝试添加XAML对象到列表视图,而“启用状态记录”已启用,但它不会让我,给出错误“当录制到故事板或属性触发器时,您可能不会更改父子结构现场。”我可以移动对象的位置,但如果对于捕捉到的屏幕太长,这将不允许它滚动。你知道一种实现它自动移动的方法,使它可以上下滚动吗?谢谢。 – Luke

+1

你可以将元素放置在ScrollViewer的StackPanel中,但我会谨慎使用滚动 - 特别是垂直(除非它像项目列表)。 –

+0

我似乎遇到了我的某个网页出现问题。 http://i.imgur.com/FpzGw.png我无法在不同的页面状态之间进行选择。该页面继承自LayoutAwarePage,并且在XAML中创建了不同的ApplicationViewStates,如http://msdn.microsoft.com/en-us/library/windows/apps/jj129464.aspx中所指定的那样。我似乎无法弄清楚它为什么不起作用,它确实为我的其他页面之一工作。你有什么想法首先检查什么? – Luke