2011-05-18 84 views
0

我有两个画布在网格中,我想要过渡的全景“图像”,我想知道我将如何去在这两个画布控件之间转换。WP7画布之间的过渡网格

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

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

谢谢。

编辑:我已经实现了这个方法,但是有问题,任何人都可以告诉我,如果我使用它是错误的?

 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

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

+0

故事板工作对我来说,我试过TransitionContentControl,但它似乎没有时间和发生的一切瞬间的makinga混乱效果。 – Hamid 2011-05-25 14:02:18

0

我会推荐使用TransitioningContentControl,它是Silverlight Toolkit的一部分。要使用此控件,请使用此控件的第一个CanvasContent。要转换,只需将Content更改为您的下一个Canvas,然后TransitioningContentControl完成剩下的工作!

有一些博客文章,对这种控制提供教程:

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

+0

谢谢,这听起来像是一个合适的解决方案,但是,基于web的silverlight示例对我没有多大帮助,我似乎找不到任何合适的解决方案。我有可能得到一个例子吗? – Hamid 2011-05-18 13:18:29

+0

WP7 Silverlight与基于Web的Silverlight具有完全相同的控制。请参阅:http://wildermuth.com/2010/07/16/Bring_Back_Page_Transitions_to_the_Windows_Phone_List_Application_Template – ColinE 2011-05-18 13:38:02

+0

我也看过这篇博客文章,他嵌入了一切。 THeyre所有使用布局根或页面本身并没有真正帮助我理解这是如何工作的。我很希望看到一个示例代码应用模板/ transitionconstrol /样式等的画布/网格(无论我@ m应该执行它)。 – Hamid 2011-05-18 13:54:57