我在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个左右的像素,它不会一直滑动。
答案 0 :(得分:0)
根据“转换”的含义,我会看一下创建一个StoryBoard来为每个画布的隐藏/显示设置动画。
答案 1 :(得分:0)
我建议使用属于Silverlight Toolkit的TransitioningContentControl
。要使用此控件,请首先Canvas
此控件的Content
。要进行转换,只需将Content
更改为下一个Canvas
,其余的TransitioningContentControl
即可完成!
有很多博客文章提供了此控件的教程:
http://blogs.academicclub.org/uidev/2010/06/12/transitioning-content-in-silverlight/