我想ObservableCollection
用撤消/重做功能覆盖我,
但是我如何获得 OldItem 的 IndexOf,因为它仍然是 -1
看起来没有 CollectionChanging() 实现
我想ObservableCollection
用撤消/重做功能覆盖我,
但是我如何获得 OldItem 的 IndexOf,因为它仍然是 -1
看起来没有 CollectionChanging() 实现
在删除操作中, 的OldStartingIndex
属性NotifyCollectionChangeEventArgs
将告诉您在删除之前集合中的项目的索引。
例如
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>
保留序列索引,这将使其权重更轻。您可以将 aList<ObservableCollection<int>>
作为历史缓存,并动态更新列表中的当前位置(将其视为导航历史)。请注意,这取决于您的性能要求,如果您的数据很长,这是有问题的,否则更容易实现。