System.Collections.ObjectModel.ObservableCollection<T> クラス

この記事では、この API のリファレンス ドキュメントへの補足的な解説を提供します。

このクラスは ObservableCollection<T> 、項目が追加または削除されたとき、またはリスト全体が更新されたときに通知を提供する動的データ コレクションを表します。

多くの場合、使用するデータはオブジェクトのコレクションです。 たとえば、データ バインディングの一般的なシナリオは、たとえばListBox、レコードListViewのコレクションを使用ItemsControlしたり、レコードのコレクションを表示したりTreeViewすることです。

IEnumerable インターフェイスを実装する任意のコレクションを列挙できます。 ただし、コレクションの挿入または削除によって UI が自動的に更新されるように動的バインドを設定するには、コレクションは INotifyCollectionChanged インターフェイスを実装する必要があります。 このインターフェイスは、基になるコレクションが CollectionChanged 変更されるたびに発生するイベントであるイベントを公開します。

この ObservableCollection<T> クラスは、インターフェイスを実装 INotifyCollectionChanged するデータ コレクション型です。

独自のコレクションを実装する前に、ObservableCollection<T> または既存のコレクション クラス (List<T>Collection<T>BindingList<T> など) のいずれかを使用することを検討してください。 高度なシナリオがあり、独自のコレクションを実装する場合は、インデックスによって個別にアクセスできるオブジェクトの非ジェネリック コレクションを提供する使用 IListを検討してください。 実装 IList すると、データ バインディング エンジンで最高のパフォーマンスが得られます。

Note

バインディング ソース オブジェクトからバインディング ターゲットへのデータ値の転送を完全にサポートするには、バインド可能なプロパティをサポートするコレクション内の各オブジェクトに、インターフェイスなどの適切なプロパティ変更通知メカニズムを実装する INotifyPropertyChanged 必要があります。

詳細については、「データ バインディングの概要」の「コレクションへのバインド」 を参照してください。

XAML の使用に関する注意事項

ObservableCollection<T> は、Windows Presentation Foundation (WPF) バージョン 3.0 および 3.5 の XAML オブジェクト要素として使用できます。 ただし、使用には大きな制限があります。

  • ObservableCollection<T>はルート要素である必要があります。ジェネリックObservableCollection<T>x:TypeArguments制約付き型を指定するために使用する必要がある属性は、ルート要素のオブジェクト要素でのみサポートされるためです。

  • 属性を宣言する x:Class 必要があります (この XAML ファイルのビルド アクションは、XAML をコンパイルするその他のビルド アクションである Page 必要があります)。

  • ObservableCollection<T> は、最初は既定の XML 名前空間にマップされていない名前空間とアセンブリ内にあります。 名前空間とアセンブリのプレフィックスをマップし、そのプレフィックスをオブジェクト要素タグで使用する ObservableCollection<T>必要があります。

アプリケーションで XAML の機能を使用 ObservableCollection<T> するより簡単な方法は、派生元の独自の非ジェネリック カスタム コレクション クラス ObservableCollection<T>を宣言し、それを特定の型に制限することです。 次に、このクラスを含むアセンブリをマップし、XAML でオブジェクト要素として参照します。