1

嘿Stackoverflowers

我目前正忙于一个绑定了 List<> 的列表框。我通过对我们的 Web 服务器的 api 调用来填充这个 List<>。现在,当我到达列表底部时,当我按下按钮时,我会显示一个“加载更多”按钮,我会再次调用我们的 api,但随后会调用 20 个新项目。现在是我的问题,我怎样才能将这 20 个新项目添加到我的 List<> 而不删除旧的 20 个。

这就是我目前填写 List<> 的方式

eventList = (from item in events.Descendants("item")
             select new Events
             {
             EventId = Convert.ToInt16(item.Element("eventid").Value),
             EventName = item.Element("eventname").Value,
             EventType = Convert.ToInt16(item.Element("type").Value)
             }).ToList();

Dispatcher.BeginInvoke(new Action(
() =>
     lbVanAlles.ItemsSource = eventList
));

但是如果我用我的 20 个新项目这样做,它们会覆盖我的旧项目。所以有人有任何线索吗?可能与 eventList.Add 相关,但随后我收到无法将其分配给“方法组”的错误

4

1 回答 1

4

eventList不是每次都用 Linq 查询的结果覆盖,而是使用该List.AddRange方法将项目附加到现有列表中。

var temp = from item in events.Descendants("item")
             select new Events
             {
             EventId = Convert.ToInt16(item.Element("eventid").Value),
             EventName = item.Element("eventname").Value,
             EventType = Convert.ToInt16(item.Element("type").Value)
             };
eventList.AddRange( temp );

此外,您不必lbVanAlles.ItemsSource每次都重新分配,而是可以切换到使用 aObservableCollection而不是 a List。这将通知ListBox何时添加项目并将自动更新。

于 2012-04-12T22:53:27.030 回答