2011-12-07 23 views

答えて

2

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

+0

返信いただきありがとうございます。 NotifyCollectionChangedEventArgsを取得するにはどうすればいいですか、INotifyCollectionChangedからCollection(CollectioViewのソース)を継承する必要がありますか? – Vikram

1

CollectionViewに基づいて独自のコレクションを実装してください。このコレクションの中には、追加されたアイテムと時間の間にマップが格納されます(新規追加アイテムを検出するためには、CollectionView.CollectionChangedイベントを購読してください)。時間内にアイテムにアクセスするためのコレクション内のメソッドを定義するpublic IEnumerable<T> GetItems(DateTime startTime, DateTime endTime)

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. 
    } 
} 
関連する問題