2013-03-29 54 views
0

我目前正在构建一个应用程序,它可以在所有页面中使用简单的xaml动画。跨页面同步动画

这里是动画

<Storyboard x:Name="raysSpin"> 
     <DoubleAnimation Duration="0:0:6.0" To="360" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" Storyboard.TargetName="sunRays" RepeatBehavior="Forever"/> 
    </Storyboard> 

以上的动画是在应用中的所有页面的XAML。现在,当用户导航到下一页时,我需要让这个动画在所有页面中保持同步,以便看起来用户没有进入不同的页面。无论动画在时间轴上的哪个位置,都需要在新页面动画上设置该位置,并从我们离开的位置开始。

有没有人知道或有任何想法如何以有效的方式执行此操作?

我的第一个也是唯一的想法是将动画的时间范围存储到存储在app.xaml.cs中的全局变量中,然后在每个页面的onNativgatedTo中,将新页面动画设置为存储的时间范围,并从那里开始我们离开了它。它在一定程度上起作用,但有明显的口吃。

我曾想过在自己的线程上运行动画,但我不知道这是否可行,如果是这样,如何去做。

回答

0

最好的办法是将您的母版页拆分成不同的部分。保存控件的位置,以及用户导航时放置新控件的位置。即使您使用动画的当前状态设置了全局变量,但在新页面加载时(除非您设置了SLA),可能需要几秒钟,否则当前的动画已经不同了,如果您想给用户一个平滑的感觉。

UPDATE:

事情是这样的:

enter image description here

你的新内容加载到 “新用户控件” 窗格。

+0

这听起来像个不错的主意,将会研究它。谢谢。 –

+0

这是最好的办法。只有一个页面,并使用用户控件来显示新内容。高兴地帮助:) – Marco

+0

只是一个简短的问题马可,所以我得到我的头。是否可以保留子页面的导航堆栈?我解释你的答案的方式是,你有一个母版页,我的背景和动画部分,然后是一个部分来保存应用程序所需的单个页面?有点像这样http://reflectionit.nl/Blog/2013/windows-8-xaml-tips-master-pages –