1

CollectionViewで最近追加されたアイテムの位置またはアイテムを取得する方法はありますか?

Reagrds、Vikram

4

3 に答える 3

2

イベントを購読しCollectionView.CollectionChangedます。イベントが発生したら、のActionプロパティを確認し、それが新しく追加されたアイテムとNotifyCollectionChangedEventArgs等しい場合は、コレクションAddに含まれます。NewItems通常、これには1つのアイテムのみが含まれ、適切な変数またはクラスメンバーに保存できます。最近追加されたアイテムが何であるかを知る必要がある場合は、この変数を読んでください。

于 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から暗黙的に継承するを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.
   }
}
于 2011-12-07T18:03:49.387 に答える