2014-10-17 1 views
0

ScrollViewer 컨트롤에서 Listbox 컨트롤을 사용하고 있습니다. 목록 상자 컨트롤의 항목을 바인딩했습니다.Windows Phone에서 목록 상자 컨트롤의 항목 제한 8

<ScrollViewer 
    Name="AgreementsSV" > 
    <ListBox 
     x:Name="MyAgr" 
     ItemsSource="{Binding MyAgreementList}" 
     SelectedIndex="-1" > 
     <Custom:Interaction.Triggers> 
      <Custom:EventTrigger EventName="Tap"> 
       <GalaSoft_MvvmLight_Command:EventToCommand 
       x:Name="AgreementTapCommand" 
       Command="{Binding NavigateToDetailsCommand, Mode=OneWay}" 
       CommandParameter="{Binding SelectedItem, ElementName=MyAgr}"/> 
      </Custom:EventTrigger> 
     </Custom:Interaction.Triggers> 
     <ListBox.ItemsPanel> 
      <ItemsPanelTemplate> 
       <StackPanel/> 
      </ItemsPanelTemplate> 
     </ListBox.ItemsPanel> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 

      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
</ScrollViewer> 

백엔드에서 한 번에 50 개 항목을 가져 와서 목록에 추가하고 있습니다. 목록에서 600 개의 항목에 도달 할 때까지 제대로 작동합니다. 그 응용 프로그램이 추락 한 후에. 나는 예외를 찾지 못했습니다.

그래서 목록 상자 컨트롤이나 ScrollViewer에 항목 제한이 있는지 확인하고 싶습니다. 목록 상자 컨트롤에 대한 다른 옵션이 있습니까?

목록 상자에 대한 데이터를 가져 오는 코드입니다.

TotalRecordsExists = responseJson.total; 
foreach (Agreement item in responseJson.rows) 
{ 
    MyAgreementList.Add(item); 
    TotalRecordsFetched++; 
} 
if (TotalRecordsFetched < TotalRecordsExists) 
{ 
    PageNumber++; 
    GetMyAgreements(); 
} 
+0

왜 스크롤바 안에 목록 상자를 추가 했습니까? 목록 상자에는 자체의 스크롤 뷰어가 있습니다. scrollviewer를 제거하고 다시 시도하십시오. –

+0

또한 백엔드에서 데이터를 가져 오는 함수에서 일부 중단 점을 설정하십시오. 백엔드가 600 개의 항목 이후에 오류를 반환 할 가능성이 있습니다. 컬렉션에 항목을 추가 할 때까지 충돌이 발생하기 전까지는 모든 것이 올바르게 실행되고 있는지 확인하십시오. –

+0

ItemsPanel을 StackPanel로 설정 한 이유는 무엇입니까? –

답변

0

ScrollViewer 내부에 ListBox를 추가하지 마십시오. ListBox ContentControl에는 잘 작동해야하는 자체 inbuilt scrollviewer가 있습니다.

이 코드를 사용해보십시오 : -

  <ListBox 
       x:Name="MyAgr" 
       ItemsSource="{Binding MyAgreementList}" 
       SelectedIndex="-1" > 
       <Custom:Interaction.Triggers> 
        <Custom:EventTrigger EventName="Tap"> 
         <GalaSoft_MvvmLight_Command:EventToCommand 
         x:Name="AgreementTapCommand" 
         Command="{Binding NavigateToDetailsCommand, Mode=OneWay}" 
         CommandParameter="{Binding SelectedItem, ElementName=MyAgr}"/> 
        </Custom:EventTrigger> 
       </Custom:Interaction.Triggers> 
       <ListBox.ItemsPanel> 
        <ItemsPanelTemplate> 
         <StackPanel/> 
        </ItemsPanelTemplate> 
       </ListBox.ItemsPanel> 
       <ListBox.ItemTemplate> 
        <DataTemplate> 

        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 

또한 내가 거기에 StackPanel의 ItemsPanel의 필요성을 볼 수 없습니다.

0

앱에 메모리 부족 현상이 발생했다고 생각합니다. 스택 패널을 사용하는 대신 기본적으로 데이터 가상화를 수행하는 가상화 된 스택 패널을 사용하십시오. 또한 ListBox 대신 LongListSelector를 사용해 볼 수도 있습니다.