在顶部插入并从底部移除的可绑定集合

本文关键字:绑定 集合 底部 顶部 插入 | 更新日期: 2023-09-27 18:29:08

我使用的是ObservableCollection,在后台线程中每秒将向其添加25个项目。使用Insert将项目添加到第0个位置。经过一段时间后,将在后台线程中删除旧项目。最后的项目正在使用RemoveAt移除。此集合绑定到数据网格。CPU使用率正在增加,并且UI没有响应,因为这些操作正在进行。

我尝试过创建一个自定义堆栈,但它无法满足完整的要求,因为无法以有效的方式从底部删除项目。

我需要创建一个可绑定的自定义集合,以非常有效的方式将项插入顶部并从底部删除。

期待任何形式的意见/建议。谢谢

在顶部插入并从底部移除的可绑定集合

ObservableCollection派生您的自定义集合,只添加所需的最低限度的额外功能如何?类似的东西

class ExtendedObservableCollection<T> : ObservableCollection<T>
{
    public void AddRange(int startingIndex, IEnumerable<T> items)
    {
        var notifier = new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, items.ToList(), startingIndex);
        foreach (var item in items)
        {
            // insert to the underlying collection to avoid change events
            Items.Insert(startingIndex++, item);
        }
        OnCollectionChanged(notifier);
    }
    public void RemoveRange(int startingIndex, int count)
    {
        // Do it yourself
    }
}