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();
}

windows phone 8中列表框控件的项目限制

不要在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。