2014-02-12 2 views
0

내 WP8 앱에 무한 스크롤 목록 (위로 &)을 추가하려고하는 중입니다. 그래서리스트 히트가 맨 위에 올 때 우리는 웹 API에서 "더 작은"아이템을로드하고,리스트 히트가 끝나면 웹 API에서 "더 큰"아이템을로드합니다.LongListSelector.ItemRealized에 더 정확한 대안

제 생각에는 원래 머리말과 꼬리말이 화면에 설정되어 있습니다.

 <phone:LongListSelector x:Name="List" ItemsSource="{Binding Routes}" Margin="0,0,0,-90" ItemRealized="listBox_ItemRealized"> 
      <phone:LongListSelector.ListHeader> 
       <Grid Margin="12,-90,12,30" Height="60" VerticalAlignment="Top"> 
        <StackPanel VerticalAlignment="Center"> 
         <TextBlock Text="Load more" /> 
        </StackPanel> 
       </Grid> 
      </phone:LongListSelector.ListHeader> 

      <phone:LongListSelector.ListFooter> 
       <Grid Margin="12,30,12,0" Height="60" VerticalAlignment="Bottom"> 
        <StackPanel VerticalAlignment="Center"> 
         <TextBlock Text="Load more" /> 
        </StackPanel> 
       </Grid> 
      </phone:LongListSelector.ListFooter> 

      <phone:LongListSelector.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Margin="12,8" Background="#FFd3dae8" Width="456"> 
         <TextBlock Text="{Binding item}" /> 
        </StackPanel> 
       </DataTemplate> 
      </phone:LongListSelector.ItemTemplate> 
     </phone:LongListSelector> 



    void listBox_ItemRealized(object sender, ItemRealizationEventArgs e) 
    { 
     if (e.ItemKind == LongListSelectorItemKind.ListHeader) 
     { 
      // Get smaller items 
     } 

     else if (e.ItemKind == LongListSelectorItemKind.ListFooter) 
     { 
      // Get bigger items 
     } 
    } 

그럼 난 머리글이나 바닥 글이 실현 될때 확인하고 그 기반으로 더 많은 데이터를로드 할 수 ListBox.ItemRealized를 사용할 수 있습니다.

문제는 웹 API에서 단 5 개의 항목 만 한 번에 가져올 수 있기 때문에 처음에는 목록에 5 개의 항목이 포함되어 있습니다. 괜찮습니다. 목록 항목 템플릿이 실제로 매우 커서 어떤 꼬리말이나 머리글도 실제로 표시되지 않으므로 목록이 화면 위로 이동합니다.

그러나 ItemRealized 이벤트는 실제로 볼 수없는 경우에도 각 요소에 대해 발생합니다. 문제는 LongListSelector 실제로 한 번에 10 (?) 항목을로드하고 모두에 대한 ItemRealized 발생시키는 것입니다 생각하십니까?

이런 종류의 기능을 수행하는 데 사용할 수있는 다른 기술이 있습니까?

답변

0

최상의 접근 방식을 사용하고 있습니다. LLS는 항목이 필요하기 전에 항목을 "실현"합니다 (작성/렌더링). 이것은 좋은 일입니다. 그들이 스크린에 올라가고있는 순간에 실현해야한다면 큰 성능 문제가 발생할 것입니다.

항목이 실현되면 항목을 더 추가 할 수 있습니다. 항목이 더 이상 실현되지 않을 때까지 계속하십시오.

5 개 이상의 항목을 가져 오는 것이 좋습니다. 결과적으로 서버에서 얻는 결과가 매우 적습니다.

+0

이 경우 일반적으로 목록에있는 5 개의 항목으로 충분합니다. 그러나 더 많은 결과를 얻으려면 위/아래로 스크롤 할 수 있다면 좋을 것입니다. 한 번에 서버에서 단 5 항목 만 얻는 것은 내 손에서 완전히 벗어났습니다. 물론 더 많은 항목을 가져 오기 위해 여러 요청을 할 수 있습니다 ... – devha

+0

정말 찾고있는 것은 정확히 목록 (목록 상자 또는 longlistselector)이 위 또는 아래에 도달 할 때 확인할 수있는 솔루션입니다. 그러면 웹 요청을하고 더 많은 아이템을 얻을 수 있습니다. – devha

+0

[이 게시물] (http://visuallylocated.com/post/2014/01/16/Synching-the-scroll-position-of-two-LongListSelectors.aspx)에서 수행 한대로 ViewportControl에 연결할 수 있습니다. –