WPF:从绑定列表中删除最后一项的最有效方法?

时间:2016-03-04 16:28:04

标签: c# wpf collections binding processing-efficiency

在WPF应用程序中,我有一个对象列表。

我们会定期在这个列表中添加很多元素(约1-10项/秒)。

我们希望在此列表中添加“容量”,以便在达到此容量时,删除添加的“最旧”项目。

此列表将绑定到WPF UserControl,因此它必须为ObservableCollection或类似。

但是,我的理解是Collection并不保证订单,所以我不能做到以下几点:

int nbOfElementsToRemove = EventsList.Count - MAX_EVENTS;
if (nbOfElementsToRemove > 0)
{
    LoggingEvent[] loggingEvents = EventsList.Take(nbOfElementsToRemove).ToArray();
    foreach (LoggingEvent loggingEvent in loggingEvents)
    {
        EventsList.Remove(loggingEvent);
    }
}

因为我可能找不到最旧的物品。

那么删除必须绑定到WPF用户控件的列表中最旧的项目的最有效方法是什么?

2 个答案:

答案 0 :(得分:1)

ObservableCollection确实是一个有序集合,因此您可以通过各种方式删除最旧的集合。

如果您只是通过EventsList.Add()添加项目,则可以删除该集合中的第一项:EventsList.RemoveAt(0)

答案 1 :(得分:1)

订购了ObservableCollection,因此您可以使用索引将其删除。