以编程方式滑动到下一个全景项

5

是否可以通过编程的方式从一个全景页面/项目移动到下一个,并获得与用手指滑动时相同的动画滑动效果?

我可以使用PanoramaControl.DefaultItem属性移动到预期的项目/页面,但您将无法获得动画滑动效果。这里有什么想法吗?


不是很准确,这是关于动画的,而不是如何更改项目。 - Johan Danforth
5个回答

13

可以实现,只需将DefaultItem的设置放置在SlideTransition完成事件之间即可:

public static class PanoramaExtensions
{
    public static void SlideToPage(this Panorama self, int item)
    {

        var slide_transition = new SlideTransition() { };
        slide_transition.Mode = SlideTransitionMode.SlideLeftFadeIn;
        ITransition transition = slide_transition.GetTransition(self);
        transition.Completed += delegate
        {
            self.DefaultItem = self.Items[item];
            transition.Stop();
        };
        transition.Begin();
    }
}
使用 my_panorama.SlideToPage(1) 可以滑动到第二页。

2
请注意,您的答案基于CodePlex上的(非标准)Microsoft.Phone.Controls.Toolkit库。此外,您的代码依赖于类中的其他字段。我进行了更改,以使代码片段自包含。干杯! - henon

6
您可以使用以下代码:
panoramaRoot.DefaultItem = (PanoramaItem)panoramaRoot.Items[1];

1

编程上无法更改全景控件的选定索引。正如您所提到的,设置索引的唯一方法是使用DefaultItem属性,该属性仅在导航到包含全景的页面时有用。

这里还有另一篇讨论此问题的帖子。


1

我认为最简单的方法是为每个项目创建单独的可视状态,并创建动画幻灯片转换以过渡到每个状态。然后,您可以使用VisualStateManager.GoToState(<page>, <state>, true);来启动状态更改。


1
我不会说这是“最简单的方法” ;) - jumbo
也许不是最容易的方法,但这是我能想到的唯一方法,因此默认情况下它是最容易的:P - Derek Lakin

1

不好意思 - 全景控件不支持这样的编程操作。

如果你想要这样的体验,那么你可以尝试自己手写一个全景控件 - 例如http://phone.codeplex.com/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接