我如何从ObservableCollection获得IndexOf删除项目
本文关键字:获得 IndexOf 删除项目 ObservableCollection | 更新日期: 2023-09-27 18:05:51
我想用撤销/重做功能覆盖我的ObservableCollection
但我如何获得IndexOf的OldItem,因为它仍然是-1
并且看起来好像没有CollectionChanging()实现
在移除操作中,NotifyCollectionChangeEventArgs
的OldStartingIndex
属性将告诉您在移除之前在集合中保存的项的索引。
var col = new ObservableCollection<string>();
col.Add("hello");
col.Add("world");
col.CollectionChanged += (sender, e) => Console.WriteLine(e.OldStartingIndex);
col.RemoveAt(1);
col.RemoveAt(0);
这将输出
1
0
我的一个解决方案是为您的数据保留一个单独的列表,并让ObservableCollection<int>
保留序列索引,这将使其权重更轻。您可以使用List<ObservableCollection<int>>
作为历史缓存,并动态更新列表中的当前位置(将其视为导航历史)。请注意,这取决于您的性能需求,如果您的数据非常长,这是有问题的,否则更容易实现。