2015-03-08 3 views
1

Использование ListView на WinRT WP8.1 приложение:Windows Phone ContainerContentChanging Фаза всегда 0

Я пытаюсь использовать ContainerContentChanging событие на ListView, как так -

private void ListOnContainerContentChanging(ListViewBase sender, ContainerContentChangingEventArgs args) 
    { 
     var viewer = args.ItemContainer.ContentTemplateRoot as View; 
     if (viewer == null) 
     { 
      return; 
     } 

     if (args.InRecycleQueue) 
     { 
      viewer.ClearData(); 
     } 
     else if (args.Phase == 0) 
     { 
      viewer.ShowPlaceholder(args.Item as ViewModel); 

      args.RegisterUpdateCallback(this.ContainerContentChangingDelegate); 
     } 
     else if (args.Phase == 1) 
     { 
      // Load 
      args.RegisterUpdateCallback(this.ContainerContentChangingDelegate); 
     } 
     else if (args.Phase == 2) 
     { 
      // Load more 
      args.RegisterUpdateCallback(this.ContainerContentChangingDelegate); 
     } 
     else if (args.Phase == 3) 
     { 
      // Show images 
     } 

     args.Handled = true; 
    } 

Проблема у меня свойство Phase на ContainerContentChangingEventArgs всегда 0 при прокрутке для просмотра большего количества элементов.

(все работает правильно для элементов, загруженных в изначальном виде - это только тогда, когда я начинаю прокрутке, что никакие элементы не обновляются просроченным заполнителем

Любые идеи, почему Hase недвижимость не будет обновлять

ответ

0

.? Вам необходимо указать номер фазы при регистрации обратного вызова для обновления

Ваш код должен выглядеть следующим образом:.

private void ListOnContainerContentChanging(ListViewBase sender, ContainerContentChangingEventArgs args) 
{ 
    var viewer = args.ItemContainer.ContentTemplateRoot as View; 
    if (viewer == null) 
    { 
     return; 
    } 

    if (args.InRecycleQueue) 
    { 
     viewer.ClearData(); 
    } 
    else if (args.Phase == 0) 
    { 
     viewer.ShowPlaceholder(args.Item as ViewModel); 

     args.RegisterUpdateCallback(1, this.ContainerContentChangingDelegate); 
    } 
    else if (args.Phase == 1) 
    { 
     // Load 
     args.RegisterUpdateCallback(2, this.ContainerContentChangingDelegate); 
    } 
    else if (args.Phase == 2) 
    { 
     // Load more 
     args.RegisterUpdateCallback(3, this.ContainerContentChangingDelegate); 
    } 
    else if (args.Phase == 3) 
    { 
     // Show images 
    } 

    args.Handled = true; 
} 
Смежные вопросы