我想在Metro Style App中使用幻灯片样式实现页面转换。
效果看起来像
state 1 state 2 state 3
____________ _______________ ____________
| | | | | | |
| page A | ====> |page A |page B | ====> | page B |
| | |partial|partial| | |
|____________| |_______|_______| |____________|
它将通过平移手势从右向左滑动(没有触发系统工具栏,我不知道如何隔离它们)来触发。
我玩了exitPage/enterPage,但没有运气:在B页进入之前,页面A似乎消失了。
我还阅读了single page navigation,code sample of fragment loading和code sample of scrolling/panning,并考虑将当前页面和新页面放在div包装器中并在div中滑动它们不调用{{1 }}。但这可能会打破CSS的位置,我不知道什么时候可以安全地调用新页面的JS ......
更新1 或许FlipView可以做到这一点吗?
更新2 找到将本地页面加载到navigate()
的方法,找到了有用的链接,但仍然困惑......
innerHTML
inside Template
for external RSS feed ListView
update 3 通过完全定义FlipView
个页面并在FlipView.itemTemplate中呈现FlipView
之一来计算PageControl
用法的原始版本那个合适吗?
那么,任何合适的解决方案或明智的想法?谢谢!
答案 0 :(得分:2)
你绝对可以使用FlipView,但我会说实话,我不知道它在HTML方面是如何工作的。在Xaml方面,您将实现“页面”作为用户控件而不是实际页面,然后您将它们托管在FlipView中。如果你有很多“页面”和与这些“页面”相关的数据,这可能会占用大量资源。
在Xaml端,每个真实页面(继承自Page)显示在Frame中。框架一次只能显示一页。这就是为什么你看到第一页在动画完成之前就消失了。
如果您不希望用户能够浏览多个虚拟页面,或者资源过于密集,您可能不想使用FlipView。相反,您可以使用两个ContentPresenters并拥有动画。 ContentPresenterA和ContentPresenterB是并排的。动画幻灯片,最后它将ContentPresenterA设置为ContentPresenterB的内容并快速回到动画的开头。它应该很快发生,用户不会注意到跳跃。
我打算让我的同事和朋友Ryan Joy跳到这里,看看他是否可以谈论如何在HTML方面做这些事情。
答案 1 :(得分:0)
我已经使用了FlipView
。 WinJS.UI
中base.js
内的代码解释了有关效果的所有内容(如Dominic Hopton所述)。 FlipView
足以满足我目前的使用需求(可能需要针对未来的额外翻转行为进行自定义)。
FlipView
在开始时一次加载所有页面,以减少过载,我
div
而不是PageControl
,然后在PageControl
的事件onpagecompleted/onpagechangedvisibility
中加载/卸载FlipView
。这会带来一个副作用,即当页面在视口内部(或隐藏)时可以触发PageControl.ready/unload
,非常方便。itemDataSource
逐步加载额外页面(也可以动态卸载?)另外,在FlipView
包裹的PageControl
内可以使用额外的FlipView
,MSDN没有提到这一点。