我试图在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个项目。
问题是,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++;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句