2016-03-04 63 views
1

在WPF应用程序中,我有一个对象列表。WPF:从绑定列表中删除最后一项的最有效方法?

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

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

此列表将被绑定到WPF UserControl,因此它需要是ObservableCollection或类似的。

但是,我的理解是,Collection不garantee顺序,所以我不能做到以下几点:

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

因为我也许不能获得最早的项目。

那么删除必须绑定到WPF usercontrol的列表中最老的项目的最有效方法是什么?

回答

1

ObservableCollection确实是一个有序的集合,所以你应该没有问题通过各种手段去除最老的一个。

如果你只是简单的通过EventsList.Add()添加项目,那么你可以删除集合中的第一项:EventsList.RemoveAt(0)

1

的的ObservableCollection是有序的,所以你会被罚款使用索引中删除。

相关问题