【问题标题】:How to get ten, ten items from Observable Collection?如何从 Observable Collection 中获取十、十个项目?
【发布时间】:2014-06-23 12:45:49
【问题描述】:

我正在尝试在 windows phone 7 列表框中每页加载十个项目。当我滚动到列表框的末尾时,应该加载另外 10 个项目。我尝试过简单的刺痛。我已经完成了。当我尝试加载我的原始可观察集合时,我无法获得 10,10 个项目。

我尝试过这样的:-

    void AddMoreItems()
    {
        int start = items.Count;
        int end = start + 10;
        for (int i = start; i < end; i++)
        {
            items.Add("Item " + i);
        }
    }

在这里,我可以每页加载 10、10 个项目。

现在我尝试使用可观察的集合:-

int end = 10;
int start = 0;
int total = listForLoading.Count;

void AddMoreItems()
{
    if (total > 0)
    {
        int i = start;
        foreach (var item in StudentDetails)
        {
            if (i < end)
            {
                items.Add(new ListBoxWithButtonModel() { FirstName = item.FirstName,LastName = item.LastName,Age = item.Age,PersonImage=item.PersonImage });                       
                i++;
            }
        }
        total = total > 10 ? total - 10 : total - total;
        start = items.Count;
        end = total > 10 ? start + 10 : start + total;
    }
}

在这里,我一次又一次地得到相同的物品。添加到列表框后,我试图从集合中删除项目。但我遇到了错误。

请告诉我从可观察集合中加载 10、10 个项目的任何想法。

【问题讨论】:

标签: c# windows-phone-7 observablecollection


【解决方案1】:

问题是foreach 总是从列表的开头开始,但你没有在列表的开头开始你的计数器。您可以通过以下方式简化代码:

int taken = 0;  // number of items already taken
int totalToTake = listForLoading.Count;

void AddMoreItems()
{
    if (taken >= totalToTake) return;  // all taken

    int i = 0;
    int stopi = taken+10;
    foreach (var item in StudentDetails)
    {
        if (i >= taken && i < stopi)
        {
            // add your item here

            // and then increment the number taken
            taken++;
        }
        ++i;
    }
 }

您可以通过以下方式进一步简化:

    var itemsToTake = StudentDetails.Skip(taken).Take(10);
    foreach (var item in itemsToTake)
    {
        // add your item here

        // and then increment the number taken
        taken++;
    }

【讨论】:

  • 哇..!!它的工作..!!谢谢你先生..!!
猜你喜欢
  • 1970-01-01
  • 2011-10-15
  • 2018-10-12
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 2019-05-21
  • 2012-06-22
  • 1970-01-01
相关资源
最近更新 更多