Инструментарий NavigationTransitions иногда не работает - PullRequest
0 голосов
/ 22 января 2012

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

<Style x:Key="ReaderTransitionPageStyle"
        TargetType="phone:PhoneApplicationPage">
    <Setter Property="toolkit:TransitionService.NavigationInTransition">
        <Setter.Value>
            <toolkit:NavigationInTransition>
                <toolkit:NavigationInTransition.Backward>
                    <toolkit:SlideTransition Mode="SlideDownFadeIn" />
                </toolkit:NavigationInTransition.Backward>
                <toolkit:NavigationInTransition.Forward>
                    <toolkit:SlideTransition Mode="SlideUpFadeIn" />
                </toolkit:NavigationInTransition.Forward>
            </toolkit:NavigationInTransition>
        </Setter.Value>
    </Setter>
    <Setter Property="toolkit:TransitionService.NavigationOutTransition">
        <Setter.Value>
            <toolkit:NavigationOutTransition>
                <toolkit:NavigationOutTransition.Backward>
                    <toolkit:SlideTransition Mode="SlideDownFadeOut" />
                </toolkit:NavigationOutTransition.Backward>
                <toolkit:NavigationOutTransition.Forward>
                    <toolkit:SlideTransition Mode="SlideUpFadeOut" />
                </toolkit:NavigationOutTransition.Forward>
            </toolkit:NavigationOutTransition>
        </Setter.Value>
    </Setter>
</Style>

Затем применяя этот стиль к моим страницам.

Однако переходы редко работают.Иногда они работают правильно, иногда нет.Даже если я перемещаюсь назад и вперед между одними и теми же двумя страницами, иногда анимация корректна, иногда нет вообще, страница просто всплывает мгновенно.И даже когда это работает, анимация вовсе не плавная, а скорее медленная.

Существуют ли какие-либо обычные причины, замедляющие переходы, предоставляемые инструментарием?Должен ли я не выполнять длительную обработку в OnNavigatedTo целевой страницы?

Существуют ли какие-либо другие методы для анимации перехода страницы, или единственное другое решение - сделать это с помощью пользовательских раскадровок?

ОБНОВЛЕНИЕ: я разрабатывал с HTC Mozart, и сегодня я попробовал с Lumia 800 одного из моих коллег, и это НАМНОГО лучше, вероятно, из-за более сильного аппаратного обеспечения.Однако сегодня я попытаюсь использовать раскадровки напрямую.

ОБНОВЛЕНИЕ: непосредственное использование раскадровок не помогло, анимация по-прежнему непоследовательна и заикается.

1 Ответ

2 голосов
/ 22 января 2012

Я думаю, что причиной может быть сложный макет и большая обработка, когда вы переходите на страницу или загружаете ее. Вы можете проверить это, оставив страницы довольно простыми, воздерживаясь от любой загрузки или обработки - если вы все еще не видите анимацию - тогда я понятия не имею, что происходит. Если станет лучше - нужно поработать над перфом. Отложите большую часть обработки до завершения анимации перехода, переместите все, что можете, к асинхронным вызовам / фоновой обработке потоков. Смотрите это:

http://blogs.msdn.com/b/slmperf/archive/2011/06/13/off-thread-decoding-of-images-on-mango-how-it-impacts-you-application.aspx

Используйте BackgroundWorker, будьте осторожны с синхронизацией и бережно относитесь к использованию процессора.

...