windows phone 8中列表框控件的项目限制
本文关键字:项目 控件 phone 列表 windows | 更新日期: 2023-09-27 18:26:47
我使用的是ScrollViewer控件下的Listbox控件。我已经对Listbox控件的项进行了绑定。
<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项。在应用程序崩溃之后。我没有发现任何例外。
所以我想确保Listbox控件或ScrollViewer有任何项目限制吗?列表框控件有其他选项吗?
用于获取列表框数据的代码。
TotalRecordsExists = responseJson.total;
foreach (Agreement item in responseJson.rows)
{
MyAgreementList.Add(item);
TotalRecordsFetched++;
}
if (TotalRecordsFetched < TotalRecordsExists)
{
PageNumber++;
GetMyAgreements();
}
不要在ScrollViewer中添加ListBox。ListBoxContentControl有自己的内置滚动查看器,应该可以正常工作。
试试这个代码:-
<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项目面板。
我觉得你的应用程序内存不足。不要使用stackpanel,而是使用默认情况下进行数据虚拟化的virtualizedstackpanel。您也可以尝试使用LongListSelector而不是ListBox。