ObservableCollection<T> クラス

定義

項目が追加、削除されたとき、またはリスト全体が更新されたときに通知を提供する動的なデータ コレクションを表します。Represents a dynamic data collection that provides notifications when items get added, removed, or when the whole list is refreshed.

generic <typename T>
public ref class ObservableCollection : System::Collections::ObjectModel::Collection<T>, System::Collections::Specialized::INotifyCollectionChanged, System::ComponentModel::INotifyPropertyChanged
[System.Serializable]
public class ObservableCollection<T> : System.Collections.ObjectModel.Collection<T>, System.Collections.Specialized.INotifyCollectionChanged, System.ComponentModel.INotifyPropertyChanged
type ObservableCollection<'T> = class
    inherit Collection<'T>
    interface INotifyCollectionChanged
    interface INotifyPropertyChanged
Public Class ObservableCollection(Of T)
Inherits Collection(Of T)
Implements INotifyCollectionChanged, INotifyPropertyChanged

型パラメーター

T

コレクション内の要素の型。The type of elements in the collection.

継承
ObservableCollection<T>
派生
属性
実装

注釈

多くの場合、使用するデータはオブジェクトのコレクションです。In many cases the data that you work with is a collection of objects. たとえば、データバインディングの一般的なシナリオではItemsControl 、、 ListViewTreeViewなどのListBoxを使用して、レコードのコレクションを表示します。For example, a common scenario in data binding is to use an ItemsControl such as a ListBox, ListView, or TreeView to display a collection of records.

IEnumerableインターフェイスを実装する任意のコレクションを列挙できます。You can enumerate over any collection that implements the IEnumerable interface. ただし、コレクションの挿入または削除によってがUIUI自動的に更新されるように動的バインドを設定するには、コレクションでINotifyCollectionChangedインターフェイスを実装する必要があります。However, to set up dynamic bindings so that insertions or deletions in the collection update the UIUI automatically, the collection must implement the INotifyCollectionChanged interface. このインターフェイスは、 CollectionChangedイベントを公開します。これは、基になるコレクションが変更されるたびに発生するイベントです。This interface exposes the CollectionChanged event, an event that should be raised whenever the underlying collection changes.

WPFWPFクラスを提供します。これは、 INotifyCollectionChangedインターフェイスを実装するデータコレクションの組み込みの実装です。 ObservableCollection<T>provides the ObservableCollection<T> class, which is a built-in implementation of a data collection that implements the INotifyCollectionChanged interface.

独自のコレクションを実装する前にObservableCollection<T> 、または既存のコレクションクラス (、、 List<T>などCollection<T>) BindingList<T>のいずれかを使用することを検討してください。Before implementing your own collection, consider using ObservableCollection<T> or one of the existing collection classes, such as List<T>, Collection<T>, and BindingList<T>, among many others. 高度なシナリオがあり、独自のコレクションを実装する場合は、をIList使用することを検討してください。これは、インデックスによって個別にアクセスできるオブジェクトの非ジェネリックコレクションを提供します。If you have an advanced scenario and want to implement your own collection, consider using IList, which provides a non-generic collection of objects that can be individually accessed by index. IList実装すると、データバインディングエンジンで最高のパフォーマンスが得られます。Implementing IList provides the best performance with the data binding engine.

注意

バインディングソースオブジェクトからバインディングターゲットへのデータ値の転送を完全にサポートするには、バインド可能なプロパティをサポートするコレクション内の各オブジェクトが、 INotifyPropertyChanged適切なプロパティ変更通知機構を実装する必要があります。たとえば、efi.To fully support transferring data values from binding source objects to binding targets, each object in your collection that supports bindable properties must implement an appropriate property changed notification mechanism such as the INotifyPropertyChanged interface.

詳細については、「データバインディングの概要」の「コレクションへのバインド」を参照してください。For more information, see "Binding to Collections" in Data Binding Overview.

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

ObservableCollection<T>バージョン3.0 および3.5 では、のWindows Presentation Foundation (WPF)Windows Presentation Foundation (WPF)XAML オブジェクト要素として使用できます。ObservableCollection<T> can be used as a XAML object element in Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF), in versions 3.0 and 3.5. ただし、使用方法には大きな制限があります。However, the usage has substantial limitations.

  • ObservableCollection<T>はルート要素である必要がありx:TypeArgumentsます。これは、ジェネリックObservableCollection<T>の制約付きの型を指定するために使用する必要がある属性が、ルート要素の object 要素でのみサポートされるためです。ObservableCollection<T> must be the root element, because the x:TypeArguments attribute that must be used to specify the constrained type of the generic ObservableCollection<T> is only supported on the object element for the root element.

  • 属性をx:Class宣言する必要があります (この xaml ファイルのビルドアクションは、 Pageまたは xaml をコンパイルするその他のビルドアクションである必要があります)。You must declare an x:Class attribute (which entails that the build action for this XAML file must be Page or some other build action that compiles the XAML).

  • ObservableCollection<T>が、既定の XML 名前空間に最初にマップされていない名前空間とアセンブリに含まれています。ObservableCollection<T> is in a namespace and assembly that are not initially mapped to the default XML namespace. 名前空間とアセンブリのプレフィックスをマップし、のObservableCollection<T>オブジェクト要素タグでそのプレフィックスを使用する必要があります。You must map a prefix for the namespace and assembly, and then use that prefix on the object element tag for ObservableCollection<T>.

アプリケーションで XAML から機能をObservableCollection<T>使用するためのより簡単な方法は、からObservableCollection<T>派生する独自の非ジェネリックカスタムコレクションクラスを宣言し、それを特定の型に制限することです。A more straightforward way to use ObservableCollection<T> capabilities from XAML in an application is to declare your own non-generic custom collection class that derives from ObservableCollection<T>, and constrains it to a specific type. 次に、このクラスを含むアセンブリをマップし、XAML でオブジェクト要素として参照します。Then map the assembly that contains this class, and reference it as an object element in your XAML.

コンストラクター

ObservableCollection<T>()

ObservableCollection<T> クラスの新しいインスタンスを初期化します。Initializes a new instance of the ObservableCollection<T> class.

ObservableCollection<T>(IEnumerable<T>)

指定したコレクションからコピーされた要素を格納する、ObservableCollection<T> クラスの新しいインスタンスを初期化します。Initializes a new instance of the ObservableCollection<T> class that contains elements copied from the specified collection.

ObservableCollection<T>(List<T>)

指定したリストからコピーされた要素を格納する ObservableCollection<T> クラスの新しいインスタンスを初期化します。Initializes a new instance of the ObservableCollection<T> class that contains elements copied from the specified list.

プロパティ

Count

Collection<T> に実際に含まれる要素の数を取得します。Gets the number of elements actually contained in the Collection<T>.

(継承元 Collection<T>)
Item[Int32]

指定したインデックスにある要素を取得または設定します。Gets or sets the element at the specified index.

(継承元 Collection<T>)
Items

IList<T> をラップする Collection<T> ラッパーを取得します。Gets a IList<T> wrapper around the Collection<T>.

(継承元 Collection<T>)

メソッド

Add(T)

Collection<T> の末尾にオブジェクトを追加します。Adds an object to the end of the Collection<T>.

(継承元 Collection<T>)
BlockReentrancy()

このコレクションを変更するための再入試行を禁止します。Disallows reentrant attempts to change this collection.

CheckReentrancy()

このコレクションを変更するための再入試行をチェックします。Checks for reentrant attempts to change this collection.

Clear()

Collection<T> からすべての要素を削除します。Removes all elements from the Collection<T>.

(継承元 Collection<T>)
ClearItems()

コレクションからすべての項目を削除します。Removes all items from the collection.

Contains(T)

ある要素が Collection<T> 内に存在するかどうかを判断します。Determines whether an element is in the Collection<T>.

(継承元 Collection<T>)
CopyTo(T[], Int32)

Collection<T> 全体を、互換性のある 1 次元の Array にコピーします。コピー操作は、コピー先の配列の指定したインデックスから始まる部分に行います。Copies the entire Collection<T> to a compatible one-dimensional Array, starting at the specified index of the target array.

(継承元 Collection<T>)
Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判定します。Determines whether the specified object is equal to the current object.

(継承元 Object)
GetEnumerator()

Collection<T> を反復処理する列挙子を返します。Returns an enumerator that iterates through the Collection<T>.

(継承元 Collection<T>)
GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
IndexOf(T)

指定したオブジェクトを検索し、Collection<T> 全体内で最初に見つかった位置の 0 から始まるインデックスを返します。Searches for the specified object and returns the zero-based index of the first occurrence within the entire Collection<T>.

(継承元 Collection<T>)
Insert(Int32, T)

Collection<T> 内の指定したインデックスの位置に要素を挿入します。Inserts an element into the Collection<T> at the specified index.

(継承元 Collection<T>)
InsertItem(Int32, T)

コレクション内の指定したインデックスの位置に項目を挿入します。Inserts an item into the collection at the specified index.

MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
Move(Int32, Int32)

指定したインデックスが示す位置にある項目を、コレクション内の新しい場所に移動します。Moves the item at the specified index to a new location in the collection.

MoveItem(Int32, Int32)

指定したインデックスが示す位置にある項目を、コレクション内の新しい場所に移動します。Moves the item at the specified index to a new location in the collection.

OnCollectionChanged(NotifyCollectionChangedEventArgs)

指定された引数を使用して、CollectionChanged イベントを発生させます。Raises the CollectionChanged event with the provided arguments.

OnPropertyChanged(PropertyChangedEventArgs)

指定された引数を使用して、PropertyChanged イベントを発生させます。Raises the PropertyChanged event with the provided arguments.

Remove(T)

特定のオブジェクトが Collection<T> 内にあるときに、最初に出現したものを削除します。Removes the first occurrence of a specific object from the Collection<T>.

(継承元 Collection<T>)
RemoveAt(Int32)

Collection<T> の指定したインデックスにある要素を削除します。Removes the element at the specified index of the Collection<T>.

(継承元 Collection<T>)
RemoveItem(Int32)

指定したインデックスが示す位置にある項目をコレクションから削除します。Removes the item at the specified index of the collection.

SetItem(Int32, T)

指定したインデックス位置にある要素を置き換えます。Replaces the element at the specified index.

ToString()

現在のオブジェクトを表す string を返します。Returns a string that represents the current object.

(継承元 Object)

イベント

CollectionChanged

項目が追加、削除、変更、移動された場合、またはリスト全体が更新されたときに発生します。Occurs when an item is added, removed, changed, moved, or the entire list is refreshed.

PropertyChanged

プロパティ値が変更するときに発生します。Occurs when a property value changes.

明示的なインターフェイスの実装

ICollection.CopyTo(Array, Int32)

ICollection の要素を Array にコピーします。Array の特定のインデックスからコピーが開始されます。Copies the elements of the ICollection to an Array, starting at a particular Array index.

(継承元 Collection<T>)
ICollection.IsSynchronized

ICollection へのアクセスが同期されている (スレッド セーフである) かどうかを示す値を取得します。Gets a value indicating whether access to the ICollection is synchronized (thread safe).

(継承元 Collection<T>)
ICollection.SyncRoot

ICollection へのアクセスを同期するために使用できるオブジェクトを取得します。Gets an object that can be used to synchronize access to the ICollection.

(継承元 Collection<T>)
ICollection<T>.IsReadOnly

ICollection<T> が読み取り専用かどうかを示す値を取得します。Gets a value indicating whether the ICollection<T> is read-only.

(継承元 Collection<T>)
IEnumerable.GetEnumerator()

コレクションを反復処理する列挙子を返します。Returns an enumerator that iterates through a collection.

(継承元 Collection<T>)
IList.Add(Object)

IList に項目を追加します。Adds an item to the IList.

(継承元 Collection<T>)
IList.Contains(Object)

IList に特定の値が格納されているかどうかを判断します。Determines whether the IList contains a specific value.

(継承元 Collection<T>)
IList.IndexOf(Object)

IList 内の特定の項目のインデックスを確認します。Determines the index of a specific item in the IList.

(継承元 Collection<T>)
IList.Insert(Int32, Object)

IList 内の指定したインデックス位置に項目を挿入します。Inserts an item into the IList at the specified index.

(継承元 Collection<T>)
IList.IsFixedSize

IList が固定サイズかどうかを示す値を取得します。Gets a value indicating whether the IList has a fixed size.

(継承元 Collection<T>)
IList.IsReadOnly

IList が読み取り専用かどうかを示す値を取得します。Gets a value indicating whether the IList is read-only.

(継承元 Collection<T>)
IList.Item[Int32]

指定したインデックスにある要素を取得または設定します。Gets or sets the element at the specified index.

(継承元 Collection<T>)
IList.Remove(Object)

特定のオブジェクトが IList 内にあるときに、最初に出現したものを削除します。Removes the first occurrence of a specific object from the IList.

(継承元 Collection<T>)
INotifyPropertyChanged.PropertyChanged

プロパティ値が変更するときに発生します。Occurs when a property value changes.

拡張メソッド

CopyToDataTable<T>(IEnumerable<T>)

指定した入力 DataTable オブジェクトに応じて (ジェネリック パラメーター TDataRow)、IEnumerable<T> オブジェクトのコピーを格納する DataRow を返します。Returns a DataTable that contains copies of the DataRow objects, given an input IEnumerable<T> object where the generic parameter T is DataRow.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption)

指定した入力 DataRow オブジェクトに応じて (ジェネリック パラメーター TDataTable)、指定した IEnumerable<T>DataRow オブジェクトをコピーします。Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler)

指定した入力 DataRow オブジェクトに応じて (ジェネリック パラメーター TDataTable)、指定した IEnumerable<T>DataRow オブジェクトをコピーします。Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

Cast<TResult>(IEnumerable)

IEnumerable の要素を、指定した型にキャストします。Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

指定された型に基づいて IEnumerable の要素をフィルター処理します。Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

クエリの並列化を有効にします。Enables parallelization of a query.

AsQueryable(IEnumerable)

IEnumerableIQueryable に変換します。Converts an IEnumerable to an IQueryable.

Ancestors<T>(IEnumerable<T>)

ソース コレクション内のすべてのノードの先祖が格納された、要素のコレクションを返します。Returns a collection of elements that contains the ancestors of every node in the source collection.

Ancestors<T>(IEnumerable<T>, XName)

ソース コレクション内のすべてのノードの先祖が格納され、フィルター処理された要素のコレクションを返します。Returns a filtered collection of elements that contains the ancestors of every node in the source collection. 一致する XName を持つ要素のみがコレクションに含められます。Only elements that have a matching XName are included in the collection.

DescendantNodes<T>(IEnumerable<T>)

ソース コレクション内のすべてのドキュメントおよび要素の子孫ノードのコレクションを返します。Returns a collection of the descendant nodes of every document and element in the source collection.

Descendants<T>(IEnumerable<T>)

ソース コレクション内のすべての要素とドキュメントの子孫要素が格納された要素のコレクションを返します。Returns a collection of elements that contains the descendant elements of every element and document in the source collection.

Descendants<T>(IEnumerable<T>, XName)

ソース コレクション内のすべての要素とドキュメントの子孫要素が格納され、フィルター処理された要素のコレクションを返します。Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. 一致する XName を持つ要素のみがコレクションに含められます。Only elements that have a matching XName are included in the collection.

Elements<T>(IEnumerable<T>)

ソース コレクション内のすべての要素およびドキュメントの子要素のコレクションを返します。Returns a collection of the child elements of every element and document in the source collection.

Elements<T>(IEnumerable<T>, XName)

ソース コレクション内のすべての要素およびドキュメントの、フィルター処理された子要素のコレクションを返します。Returns a filtered collection of the child elements of every element and document in the source collection. 一致する XName を持つ要素のみがコレクションに含められます。Only elements that have a matching XName are included in the collection.

InDocumentOrder<T>(IEnumerable<T>)

ソース コレクション内のすべてのノードがドキュメント順に並べ替えて格納された、ノードのコレクションを返します。Returns a collection of nodes that contains all nodes in the source collection, sorted in document order.

Nodes<T>(IEnumerable<T>)

ソース コレクション内のすべてのドキュメントおよび要素の子ノードのコレクションを返します。Returns a collection of the child nodes of every document and element in the source collection.

Remove<T>(IEnumerable<T>)

ソース コレクション内の親ノードからすべてのノードを削除します。Removes every node in the source collection from its parent node.

適用対象

こちらもご覧ください