【问题标题】:Load more items in listbox在列表框中加载更多项目
【发布时间】:2012-08-16 17:36:32
【问题描述】:

我以前读过一些主题/问题/谷歌搜索结果,但仍然不知道如何解决我的问题。

在我的情况下,我使用 json,我所做的是将 JSON 反序列化为对象。然后使用 ListboxName.ItemsSource 我将它们绑定到列表框。

问题是我的服务器只给了我 20 个顶级结果,但我也收到了一个指向下 20 个的链接。

理论上,我想将此链接绑定到我将放在列表末尾的 LoadMore 按钮。然后呢?将新结果合并到现有的 ObservableCollection? (我假设我必须使用 ObservableCollection)

【问题讨论】:

    标签: windows-phone-7 listbox


    【解决方案1】:

    创建一个

    ObservableCollection<Items> Items {get;set;}
    

    然后在 XAML 中绑定到它并将项目添加到此集合。它会通知一个列表框来更新一个视图。

    XAML

    <ListBox x:Name="ListboxName" ItemsSource="{Binding Items}"/>
    

    在 .cs 文件中:

    //After you have parsed json
    private void OnNewDataDownloaded(List<Items> parsedItems)
    {
       foreach(var item in parsedItems)
        {
           Items.Add(item);
        }
    
    }
    

    Here你可以找到一种优雅的方式来添加LoadMore按钮

    【讨论】:

    • 谢谢,这看起来很干净而且很好,但我对 JSON 有问题。我的意思是,我将它反序列化为对象,所以我在 foreach 语句中遇到了 GetEnumerator 错误。我想我必须在将 JSON 反序列化为的类中进行更改……你知道我该如何处理吗?
    • 你从反序列化你的 json 中得到什么类型的集合?数组?一个列表?还是你一件一件地拿东西?
    • 我找到了将其保存在 ObservableCollection 中的方法: string cmetsjsonstring = e.Result.ToString(); var parsedItems = JsonConvert.DeserializeObject(cmetsjsonstring); CommentItems = new ObservableCollection(); for (int i = 0; i
    • 好的,很高兴我帮助了你 :) 你可以尝试使用 foreach(var item in parsedItems.objects) {Items.Add(item); } .
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多