WP7在网格中的Canvas之间转换

时间:2011-05-18 12:52:52

标签: windows-phone-7 transitions

我在Grid中有两个画布,我想要转换的完整场景“图像”,我想知道如何在这两个Canvas控件之间进行转换。

以编程方式我将第一个画布添加到网格中,然后将第二个画布添加到网格中,然后删除第一个,我真正想要做的就是在它们之间进行过渡。

有关如何以编程方式实现此目的的任何建议吗?

感谢。

编辑:我已实施此方法,但遇到问题,有人能告诉我,如果我使用它错了吗?

     private void doTransitionIn(Canvas slide)
    {
        SlideTransition slideLeft = new SlideTransition();
        slideLeft.Mode = SlideTransitionMode.SlideDownFadeIn;

        ITransition transition = slideLeft.GetTransition(slide);

        transition.Completed += delegate { transition.Stop(); }; transition.Begin();
    }

    private void doTransitionOut(Canvas slide)
    {
        SlideTransition slideLeft = new SlideTransition();
        slideLeft.Mode = SlideTransitionMode.SlideDownFadeOut;

        ITransition transition = slideLeft.GetTransition(slide);
        transition.Completed += delegate { transition.Stop(); }; transition.Begin();
    }

以下是我如何使用它:

            SceneGrid.Children.Add(nextCanvas);
            doTransitionIn(nextCanvas);
            doTransitionOut(currentCanvas);
            SceneGrid.Children.Remove(currentCanvas);

这个问题是动画似乎只是从屏幕的一部分开始,就像在,我只看到它滑动最后20个左右的像素,它不会一直滑动。

2 个答案:

答案 0 :(得分:0)

根据“转换”的含义,我会看一下创建一个StoryBoard来为每个画布的隐藏/显示设置动画。

答案 1 :(得分:0)

我建议使用属于Silverlight ToolkitTransitioningContentControl。要使用此控件,请首先Canvas此控件的Content。要进行转换,只需将Content更改为下一个Canvas,其余的TransitioningContentControl即可完成!

有很多博客文章提供了此控件的教程:

http://blogs.academicclub.org/uidev/2010/06/12/transitioning-content-in-silverlight/