2013-03-29 90 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 –