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 распространенным сценарием привязки данных является использование таких элементов ListBox, как, ListViewили TreeView , для вывода коллекции записей.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. Однако, чтобы настроить динамические привязки таким образом, чтобы вставки или удаления в коллекции ИПUI автоматически обновляются, коллекция должна INotifyCollectionChanged реализовать интерфейс.However, to set up dynamic bindings so that insertions or deletions in the collection update the ИПUI 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 , например взаимодействия.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.

Примечания об использовании XAMLNotes on XAML Usage

ObservableCollection<T>может использоваться в качестве объектного элемента XAML в Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF), в версиях 3,0 и 3,5.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>.

Более простой способ использования ObservableCollection<T> возможностей XAML в приложении заключается в объявлении собственного неуниверсального пользовательского класса коллекции, производного от 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> в совместимый одномерный массив 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>.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()

Возвращает строку, представляющую текущий объект.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, содержащий копии объектов DataRow при заданном входном объекте IEnumerable<T> и универсальном параметре 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 в указанный объект DataTable с заданным входным объектом IEnumerable<T>, где универсальный параметр 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 в указанный объект DataTable с заданным входным объектом IEnumerable<T>, где универсальный параметр 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)

Преобразовывает коллекцию IEnumerable в объект IQueryable.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.

Применяется к

Дополнительно