以编程方式滑动到下一个Panorama项目

时间:2011-03-18 09:44:05

标签: windows-phone-7

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

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

5 个答案:

答案 0 :(得分:13)

可能,只需将DefaultItem的设置放在SlideTransition Completed事件之间就完成了:

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)滑动到第二页。

答案 1 :(得分:6)

您可以使用以下代码:

panoramaRoot.DefaultItem = (PanoramaItem)panoramaRoot.Items[1];

答案 2 :(得分:1)

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

Here是另一篇讨论它的帖子。

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

如果您想要这样的体验,那么您可以尝试手写的全景控制 - 例如http://phone.codeplex.com/