有没有办法在CollectionView中获取最近添加的项目的位置或项目。
Reagrds, 维克拉姆
答案 0 :(得分:2)
订阅CollectionView.CollectionChanged
活动。触发事件时,请查看NotifyCollectionChangedEventArgs
的Action
属性,如果等于Add
,则新添加的项目将包含在NewItems
集合中。通常,这将只包含一个项目,您可以将其保存到适当的变量或类成员。当您需要知道最近添加的项目是什么时,请阅读此变量。
答案 1 :(得分:1)
根据CollectionView
实施您自己的收藏。在此集合中,在项目和添加时间之间存储地图(以检测新添加的订阅CollectionView.CollectionChanged
事件的项目)。在集合中定义方法,以便按时间public IEnumerable<T> GetItems(DateTime startTime, DateTime endTime)
访问项目。
答案 2 :(得分:0)
创建一个继承自INotifyCollectionChanged
的源集合,您可以使用隐式继承自INotifyCollectionChanged的ObservableCollection
。然后,您可以为源代码订阅CollectionChanged事件,并查看其中的Action
属性和NewItems
集合。示例代码 -
public ObservableCollection<object> Names
{
get;
set;
}
private ICollectionView source;
public ICollectionView Source
{
get
{
if (source == null)
{
source = CollectionViewSource.GetDefaultView(Names);
source.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(source_CollectionChanged);
}
return source;
}
}
void source_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
{
// Can play with e.NewItems here.
}
}