Переходы страниц не работают для ForwardIn при навигации

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

Анимация перехода ForwardIn не отображается, что приводит к уродливой паузе черного экрана примерно на 1,5 секунды, и страница внезапно появляется во всплывающем окне. У меня на некоторых страницах белый фон, поэтому после появления телефон пытается автоматически настроить яркость, что тоже выглядит плохо. есть ли что-то конкретное, на что мне нужно обратить внимание?

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


person Jay Kannan    schedule 22.11.2011    source источник
comment
Другие анимации работают, например, когда я наношу ответный удар, и я следовал стандартному способу отображения из того же самого.   -  person Jay Kannan    schedule 22.11.2011


Ответы (1)


Я часто видел этот эффект при привязке к спискам. Что я делаю, так это откладываю привязку до завершения навигации/анимации. Обычно я показываю индикатор выполнения после завершения анимации, жду около 50 мс в фоновом потоке, чтобы индикатор выполнения обновил свой пользовательский интерфейс, а затем привязываюсь к списку и скрываю индикатор выполнения.

Вот код, который я запускаю, когда анимация завершается:

progressBar.IsIndeterminate = true;
progressBar.Visibility = Visibility.Visible;
SynchronizationContext context = SynchronizationContext.Current;
Thread t = new Thread(() =>
{
    /* Allow the UI to catch up */
    Thread.Sleep(50);
    context.Post((state) =>
    {
        list.ItemsSource = dataSource;

        /* Hide the progress bar */
        progressBar.IsIndeterminate = false;
        progressBar.Visibility = Visibility.Collapsed;
    }, null);
});
t.IsBackground = true;
t.Start();
person calum    schedule 22.11.2011
comment
безопасно ли помещать это в функции привязки? Я назначил их больше всего в файлах XAML, нужно ли мне их переместить сейчас? - person Jay Kannan; 22.11.2011
comment
индикатор выполнения действительно находится на предыдущей странице, я не могу его контролировать. - person Jay Kannan; 22.11.2011
comment
Вам нужно будет удалить привязку в xaml, иначе список будет привязан до завершения анимации. Индикатор выполнения был просто примером, я всегда накладываю список на индикатор выполнения при такой загрузке. - person calum; 22.11.2011
comment
Я взял пример анимации из онлайн-блога разработчиков, используя стандартный шаблон турникета. он отлично работает, когда я использую его на образце. может быть, я попробую то, что вы сказали. - person Jay Kannan; 23.11.2011
comment
как лучше всего связать DataContext в коде, особенно в этом контексте в отношении анимации? Кроме того, у меня есть некоторые пользовательские элементы управления в сводке, которые включают эту анимацию. на большинстве страниц все в порядке, кроме этой, которая, к сожалению, является основной формой поиска. - person Jay Kannan; 23.11.2011
comment
Можно ли решить эту проблему с помощью свойства IsAsync? Я попробую и посмотрю. - person Jay Kannan; 28.11.2011