在顶部插入并从底部移除的可绑定集合
本文关键字:绑定 集合 底部 顶部 插入 | 更新日期: 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
}
}