2013-03-29 3 views
0

В настоящее время я создаю приложение, которое использует простую анимацию xaml на всех страницах.Синхронизация анимаций по страницам

Вот 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> 

выше анимация находится на всех страницах в приложении. Теперь, когда пользователь переходит к следующей странице, мне нужно сохранить эту анимацию синхронно на всех страницах, чтобы она выглядела так, как будто пользователь не перешел на другую страницу. Анимация, независимо от того, где она находится на временной шкале, должна установить эту позицию в анимации новых страниц и начать с того места, где мы остановились.

Кто-нибудь знает или имеет какие-либо идеи о том, как это можно эффективно выполнить?

Моя первая и единственная идея состояла в том, чтобы сохранить временной интервал анимации в глобальную переменную, хранящуюся в файле 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 –