我要重寫我的ObservableCollection
與撤銷/重做功能的IndexOf移走物品
但我如何得到的IndexOf的OldItem,因爲它仍然是-1我怎麼得到的ObservableCollection
,它看起來像有是非CollectionChanging()實現
我要重寫我的ObservableCollection
與撤銷/重做功能的IndexOf移走物品
但我如何得到的IndexOf的OldItem,因爲它仍然是-1我怎麼得到的ObservableCollection
,它看起來像有是非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>>
作爲歷史緩存,並動態更新列表中的當前位置(將其視爲導航歷史記錄)。請注意,這取決於你的性能要求,如果你的數據非常冗長,這是有問題的,而且這很容易實現。