1

случай 1:Оптимизация окна Pivot управления телефоном 8

У меня есть управления Pivot 3 Pivot Items, и каждый элемент поворота будет заполнен данными (с сервера), когда он получает фокус в первый раз.

Теперь он делает много задержек, когда я перехожу с другой страницы на эту страницу сводной информации. Как оптимизировать и уменьшить задержку? Даже я не могу показать ProgressBar при навигации по этой странице.

Случай 2:

У меня есть ListView с большим количеством элементов, скажем, 150, О выборе пункта Мне нужно показать подробное описание SelectedItem, и это должно быть Перелистываемым, так что пользователь может увидеть следующий записи на той же странице описания.

Прямо сейчас, я использую Pivot-страницу и привязываю элементы к свойству ItemsSource, и он создает еще большую задержку (10 секунд), когда вы переходите на сводную страницу и перемещаетесь со сводной страницы.

Как избавиться от этой задержки?

Помогите мне. Благодарю.

+0

Вы можете кэшировать данные в случае 1 +-и имеет кнопку обновления на ApplicationBar для загрузки новых данных. Или вы можете просто загрузить несколько записей за раз (возможно, обновите свой веб-сервис), а затем еще немного, когда они находятся в конце контейнера. На SO и MSDN есть множество примеров того, как делать то, что я упоминаю. –

+0

Спасибо. Он уже реализован только так: Загрузка только 50 записей за раз, и только в конце прокрутки будут загружены следующие пункты 50. что вызывает задержку при навигации? слишком много предметов ?. Для этого вы имеете в виду, сохраните все данные в файле во время навигации и восстановления из файла во время возвращения? Не будет ли это более дорогостоящим процессом? –

ответ

0

Используйте LongListSelector (WP8) или ListView (WP8.1) в качестве держателя товаров на первой странице. Он имеет виртуализацию пользовательского интерфейса, поэтому независимо от того, сколько элементов будет на странице, будут отображаться только элементы на экране. Он должен решить вашу задержку case 1. Если этого не происходит - проблема на стр. 2 уничтожается.

Подробнее о деталях экрана подход совершенно неправильный. Pivot создан для других целей и не рекомендуется хранить более 5 предметов внутри.

Так что вам нужно:

  1. Создать страницу для отображения одного элемента и связать DataContext с LayoutRoot
  2. Добавить ManipulationCompleted обработчик события LayoutRoot и проверить, если коромысло имеет место
  3. Update DataContext к ПРЕД или следующий пункт ,Это позволит обновить данные, отображаемые на экране
  4. Когда это будет работать, создавать анимации для плавного перехода текущей страницы влево и вправо:
    • когда пользователь двигайте палец на телефон - страница перемещения влево и вправо, к тому же смещение
    • когда выходит пользователь палец - вызов анимации для завершения салфетки
    • , когда анимация завершена (страница из экрана), обновить DataContext и назвать анимацию, чтобы принести новый элемент с другой стороны экрана

Это будет реплицировать Pivot поведения, но без потребления памяти для незаметных элементов

UPD:

Шаг 4 Реализации:

private void LayoutRoot_ManipulationDelta(object sender, System.Windows.Input.ManipulationDeltaEventArgs e) 
{ 
    (LayoutRoot.RenderTransform as CompositeTransform).TranslateX += e.DeltaManipulation.Translation.X; 
} 

private void LayoutRoot_ManipulationCompleted(object sender, System.Windows.Input.ManipulationCompletedEventArgs e) 
{ 
    if (e.TotalManipulation.Translation.X + e.FinalVelocities.LinearVelocity.X < -100) 
    { 
     if (current < Count - 1) 
     { 
      //slide to next item 
      current++; 
     } 
     else 
     { 
      //no next item - slide back 
     } 
    } 
    else if (e.TotalManipulation.Translation.X + e.FinalVelocities.LinearVelocity.X > 100) 
    { 
     if (current > 0) 
     { 
      // slide to prev item 

      current--; 
     } 
     else 
     { 
      // no prev item - slide back 
     } 
    } 
    else 
    { 
     // no swipe - slide back 
    } 
} 
+0

Да, я уже использую LLS для случая 1, а страница 2 очень легкая. Я думаю, что это из-за слишком большого количества предметов на странице 1. Есть ли какое-нибудь предложение для этого? Кроме того, для случая 2, то, что вы сказали, прекрасно и превосходно. Любой образец кода или пример для обнаружения проб? Вместо того, чтобы внедрять салфетки и анимацию, я ищу что-то вроде: имея сводную страницу с тремя элементами и меняю свои данные? Любые предложения по моему подходу? –

+0

Можете ли вы опубликовать образец кода или некоторую минимальную реализацию вашей точки 4? –

+0

@Pradeep_AJ, Он показывает основную идею, вам нужно войти и добавить другой код, чтобы заставить его работать – Ku6opr

Смежные вопросы