【问题标题】:WPF: Most efficient way to remove the last item from a bound list?WPF:从绑定列表中删除最后一项的最有效方法?
【发布时间】:2016-03-04 16:28:04
【问题描述】:

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

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

我们想在这个列表中添加一个“容量”,以便当我们达到这个容量时,我们会删除添加的“最旧”项。

此列表将绑定到 WPF 用户控件,因此它需要为 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 用户控件的最旧项目的最有效方法是什么?

【问题讨论】:

    标签: c# wpf collections binding processing-efficiency


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      ObservableCollection 是有序的,因此您可以使用索引将其删除。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-02
        • 2013-11-12
        • 2017-01-14
        • 1970-01-01
        • 1970-01-01
        • 2014-09-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多