0

我在一个网格中有两个画布,我想要转换的全场景“图像”,我想知道如何在这两个 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 像素左右,它不会一直滑动。

4

2 回答 2

0

根据您所说的“过渡”的含义,我会考虑创建一个 StoryBoard 来为每个画布的隐藏/显示设置动画。

于 2011-05-18T12:59:04.293 回答
0

我建议使用Silverlight ToolkitTransitioningContentControl的一部分。要使用此控件,请首先使用此控件。要过渡,只需将 更改为您的下一个,剩下的就交给了!CanvasContentContentCanvasTransitioningContentControl

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

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

于 2011-05-18T12:59:38.943 回答