1

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

Reagrds,维克拉姆

4

3 回答 3

2

订阅CollectionView.CollectionChanged活动。当事件触发时,查看 的Action属性NotifyCollectionChangedEventArgs,如果它等于Add新添加的项目将包含在NewItems集合中。通常这将只包含一项,您可以将其保存到适当的变量或类成员中。当您需要知道最近添加的项目是什么时,请阅读此变量。

于 2011-12-07T14:31:21.167 回答
1

基于CollectionView. 在此集合中,存储项目和添加时间之间的映射(以检测新添加的项目订阅CollectionView.CollectionChanged事件)。在您的集合中定义按时间访问项目的方法public IEnumerable<T> GetItems(DateTime startTime, DateTime endTime)

于 2011-12-07T15:33:12.930 回答
0

创建一个继承自的源集合INotifyCollectionChanged,您可以使用ObservableCollection隐式继承自 INotifyCollectionChanged 的​​源集合。然后您可以为您的源订阅 CollectionChanged 事件,然后可以查看其中的Action属性和NewItemsCollection。示例代码 -

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.
   }
}
于 2011-12-07T18:03:49.387 回答