我正在开发一个 Windows 手机应用程序,我想从我的 Web 服务中获取前 15 个对象的列表以及一个额外的项目来表示“加载下一个 15 个项目按钮”并将其绑定到列表框。在选择最后一个元素或索引(按钮)时,我想从列表中删除最后一个项目(按钮)并再次调用服务以获取接下来的 15 个项目加上将再次添加到当前列表中的按钮项目清除列表。当我们从列表框中选择最后一项时,同样的过程会继续进行。我的问题是我能够在第一轮中正确获得它。在第二轮中,将接下来的 15 个元素添加到列表中两次。我不知道真正的问题是什么。我也没有收到任何错误或异常。
以下是我到目前为止所做的:
private void ListBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
int LastIndex=app.imgItem.Count - 1;
if (ListBox1.SelectedIndex == LastIndex)
{
app.imgItem.Remove(app.imgItem[app.imgItem.Count-1]);
proxy.SelectNextItemsCompleted += new EventHandler<ServiceReference1.SelectNextItemsCompletedEventArgs>(proxy_SelectNextItemsCompleted);
int id = app.imgItem.Last().Id;
proxy.SelectNextItemsAsync(categoryID, id);
}
}
void proxy_SelectNextItemsCompleted(object sender, ServiceReference1.SelectNextItemsCompletedEventArgs e)
{
if (e.Error != null)
{
MessageBox.Show("Cannot load data.");
return;
}
else
{
foreach (var item in e.Result)
{
ImgData idata = new ImgData();
idata.CategoryID = item.CategoryID;
idata.ImageID = item.ImageID;
idata.ImageTitle = item.ImageTitle;
idata.Thumbnail = item.Thumbnail;
app.imgItem.Add(idata);
}
}
ImageData btnData = new ImageData();
btnData.CategoryID = 0;
btnData.ImageID = 0;
btnData.ImageTitle = "";
btnData.Thumbnail = "Images/loadButton.jpg";
app.imgItem.Add(btnData);
ListBox1.ItemsSource = app.imgItem;
}