在集合视图中获取最近添加的项目

时间:2011-12-07 14:27:03

标签: .net wpf collectionview

有没有办法在CollectionView中获取最近添加的项目的位置或项目。

Reagrds, 维克拉姆

3 个答案:

答案 0 :(得分:2)

订阅CollectionView.CollectionChanged活动。触发事件时,请查看NotifyCollectionChangedEventArgsAction属性,如果等于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.
   }
}