Windows phone 8 LongListSelector加载项无限

Windows phone 8 LongListSelector加载项无限,windows-phone-8,longlistselector,Windows Phone 8,Longlistselector,对于我的windows phone 8应用程序,我的数据提供商每页提供10个项目,我必须在长列表选择器中显示结果 我的第一个挑战是,它以JSON格式提供数据,我将其解析为数组,因此我无法轻松地在我的longlistselector.ItemsSource中添加项。好吧,我会通过可观察的收集来做的 第二个挑战是当用户向下滚动到第8个或第9个项目时,我必须加载第2页,以此类推,直到它返回的项目少于10个 我完成了ItemRealized事件,它在加载时为所有10个项目调用,因此如果我加载第2页,它将

对于我的windows phone 8应用程序,我的数据提供商每页提供10个项目,我必须在长列表选择器中显示结果

我的第一个挑战是,它以JSON格式提供数据,我将其解析为数组,因此我无法轻松地在我的longlistselector.ItemsSource中添加项。好吧,我会通过可观察的收集来做的

第二个挑战是当用户向下滚动到第8个或第9个项目时,我必须加载第2页,以此类推,直到它返回的项目少于10个

我完成了ItemRealized事件,它在加载时为所有10个项目调用,因此如果我加载第2页,它将在屏幕加载之前加载所有页面

我已经检查了TwitterSearch示例msdn,但不幸的是其api已过期。有什么帮助吗

编辑

对于我的测试项目,项目模板如下

                <phone:LongListSelector.ItemTemplate>
                <DataTemplate >
                    <ListBoxItem Margin="20">
                        <TextBlock FlowDirection="LeftToRight" Text="{Binding}"      Margin="0,10,0,0"  Foreground="#343330" FontSize="24"/>
                    </ListBoxItem>
                </DataTemplate>
            </phone:LongListSelector.ItemTemplate>
        ObservableCollection<string> data = new ObservableCollection<string>();
.
.
.
        IsLoading = true;
        for (int i = 0; i < 10; i++)
            data.Add(string.Format("item {0}", (pageNo * 10) + (i + 1)));
        pageNo++;
        IsLoading = false;
下面是装订

                <phone:LongListSelector.ItemTemplate>
                <DataTemplate >
                    <ListBoxItem Margin="20">
                        <TextBlock FlowDirection="LeftToRight" Text="{Binding}"      Margin="0,10,0,0"  Foreground="#343330" FontSize="24"/>
                    </ListBoxItem>
                </DataTemplate>
            </phone:LongListSelector.ItemTemplate>
        ObservableCollection<string> data = new ObservableCollection<string>();
.
.
.
        IsLoading = true;
        for (int i = 0; i < 10; i++)
            data.Add(string.Format("item {0}", (pageNo * 10) + (i + 1)));
        pageNo++;
        IsLoading = false;
已实现的事件如下所示

    private void LongListSelector_ItemRealized(object sender, ItemRealizationEventArgs e)
    {
        //data.ItemCount = data.ItemCount + 1;
        itemCount++;
        if (itemCount < 100
            && reloadOnItem.Contains(itemCount))
        {
            loadData();
        }
    }

1.您需要将JSON反序列化为对象。使用Json.Net。2.使用ObservableCollection和set ItemTemplate进行虚拟化。3.使用ItemRealized并检查id是否为9、19等来加载新项事实上,正如我所提到的,我已经实现了ItemRealized,但在我将集合分配给itemssource后,它会立即为所有10个项触发。任何解决方案我都会对它进行测试,最初它会加载2页,加载10+10项。我可以把它的最小项目从20个减少到10个吗?你有没有定义ItemTemplate?您使用什么作为项目资源?@ToniPetrina请检查我的编辑