背景: IEnumerable、INotifyPropertyChanged、および INotifyCollectionChanged を実装して、独自の監視可能なコレクションを作成しようとしていました。正常に動作しますが、CollectionChanged イベントをデータバインドすると常に null になります。ただし、Items[] プロパティ変更イベントを送信しているため、databound プロパティは更新されます。したがって、私のクラスでは決してトリガーされないため、データバインディングに関して INotifyCollectionChanged のポイントは何なのか疑問に思いましたが、データバインディングは引き続き機能します (コレクションへのすべてのバインディングを更新します)。
次に、さらに掘り下げて、ObservableCollection を逆コンパイルすることにしました。ObservableCollection にデータバインドすると、実装のように CollectionChanged イベントは null ではありません。
ですから、ObservableCollection が「特別な」扱いを受ける理由と、INotifyCollectionChange がデータ バインディングで果たす役割 (ある場合) について本当に疑問に思っています。