私が作成した ObserverableCollection に似たクラスについて質問があります。私のクラスは基本的に同じ機能を持っていますが、アイテムがリストに追加されたときにいくつかの自動ソート機能を追加します。私の質問は、私のクラスがインターフェイス INotifyCollectionChanged を実装して、コレクションが変更されたときにコレクションを表示する ListView に通知されるようにすることです (少なくともこれは私が思っていたことです)。コレクションに追加または削除するたびに、コレクションが変更されたことを通知しますが、ListView には変更が表示されません。では、INotifyCollectionChanged の機能を解釈できなかったのでしょうか。代わりに INotifyPropertyChanged を使用する必要がありますか? 質問に関するヘルプは素晴らしいでしょう!
私のクラスの重要な部分は次のとおりです。
public class AscendingObservableCollection<T> : ICollection<T>, IEnumerable<T>, INotifyCollectionChanged
{
public event NotifyCollectionChangedEventHandler CollectionChanged;
...
protected void OnCollectionChanged()
{
CollectionChanged.Invoke(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
}
}
コレクションが変更されるたびに (アイテムの追加/削除)、OnCollectionChanged() を呼び出します。私のコレクションは LinkedList であり、NotifyCollectionChangedEventArgs コンストラクターには、通常 LinkedList にはない NotifyCollectionChangedAction.Add/Remove フラグのインデックスが必要なので、すべての変更に NotifyCollectionChangedAction.Reset を使用します。
コレクションを使用する私の ListView は、コレクションにアクセスするために ItemSource プロパティで Databinding を使用します。
さらにコードが必要な場合はお知らせください。