ObservableCollection<T> ObservableCollection<T> ObservableCollection<T> ObservableCollection<T> Class

Definición

Representa una colección de datos dinámicos que proporciona notificaciones cuando se agregan o se quitan elementos o cuando se actualiza toda la lista.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

Parámetros de tipo

T

Tipo de los elementos de la colección.The type of elements in the collection.

Herencia
ObservableCollection<T>ObservableCollection<T>ObservableCollection<T>ObservableCollection<T>
Derivado
Atributos
Implementaciones

Comentarios

En muchos casos, los datos con los que trabaja son una colección de objetos.In many cases the data that you work with is a collection of objects. Por ejemplo, un escenario común en el enlace de datos es usar ItemsControl una ListBox ListView,, o TreeView para mostrar una colección de registros.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.

Puede enumerar en cualquier colección que implementa la IEnumerable interfaz.You can enumerate over any collection that implements the IEnumerable interface. Sin embargo, para configurar enlaces dinámicos para que las inserciones o eliminaciones de la colección actualicen IUUI automáticamente, la colección debe implementar la INotifyCollectionChanged interfaz.However, to set up dynamic bindings so that insertions or deletions in the collection update the IUUI automatically, the collection must implement the INotifyCollectionChanged interface. Esta interfaz expone el CollectionChanged evento, un evento que debe producirse cada vez que cambie la colección subyacente.This interface exposes the CollectionChanged event, an event that should be raised whenever the underlying collection changes.

WPFWPFproporciona la ObservableCollection<T> clase, que es una implementación integrada de una colección de datos que implementa la INotifyCollectionChanged interfaz.provides the ObservableCollection<T> class, which is a built-in implementation of a data collection that implements the INotifyCollectionChanged interface.

Antes de implementar su propia colección, considere ObservableCollection<T> la posibilidad de usar o una de las clases de List<T>colección Collection<T>existentes, BindingList<T>como, y, entre muchas otras.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. Si tiene un escenario avanzado y desea implementar su propia colección, considere la posibilidad de IListusar, que proporciona una colección no genérica de objetos a los que se puede tener acceso individualmente por índice.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. La IList implementación proporciona el mejor rendimiento con el motor de enlace de datos.Implementing IList provides the best performance with the data binding engine.

Nota

Para admitir totalmente la transferencia de valores de datos de objetos de origen de enlace a destinos de enlace, cada objeto de la colección que admite propiedades enlazables debe implementar un mecanismo de notificación INotifyPropertyChanged de cambio de propiedad adecuado como el interfaz.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.

Para obtener más información, vea "enlazar a colecciones" en información general sobre el enlace de datos.For more information, see "Binding to Collections" in Data Binding Overview.

Notas sobre el uso de XAMLNotes on XAML Usage

ObservableCollection<T>se puede usar como un elemento de objeto XAML Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF)en, en las versiones 3,0 y 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. Sin embargo, el uso tiene limitaciones importantes.However, the usage has substantial limitations.

  • ObservableCollection<T>debe ser el elemento raíz, porque el x:TypeArguments atributo que debe usarse para especificar el tipo restringido del genérico ObservableCollection<T> solo se admite en el elemento de objeto para el elemento raíz.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.

  • Debe declarar un x:Class atributo (que implica que la acción de compilación para este archivo XAML debe ser Page o alguna otra acción de compilación que compile el 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>está en un espacio de nombres y ensamblado que no están asignados inicialmente al espacio de nombres XML predeterminado.ObservableCollection<T> is in a namespace and assembly that are not initially mapped to the default XML namespace. Debe asignar un prefijo para el espacio de nombres y el ensamblado y, a continuación, utilizar ese prefijo en la etiqueta del elemento de objeto para 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>.

Una manera más sencilla de usar ObservableCollection<T> funciones de XAML en una aplicación consiste en declarar su propia clase de colección personalizada no genérica que deriva de ObservableCollection<T>y la restringe a un tipo específico.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. A continuación, asigne el ensamblado que contiene esta clase y haga referencia a él como un elemento de objeto en el código XAML.Then map the assembly that contains this class, and reference it as an object element in your XAML.

Constructores

ObservableCollection<T>() ObservableCollection<T>() ObservableCollection<T>() ObservableCollection<T>()

Inicializa una nueva instancia de la clase ObservableCollection<T>.Initializes a new instance of the ObservableCollection<T> class.

ObservableCollection<T>(IEnumerable<T>) ObservableCollection<T>(IEnumerable<T>) ObservableCollection<T>(IEnumerable<T>) ObservableCollection<T>(IEnumerable<T>)

Inicializa una nueva instancia de la clase ObservableCollection<T> que contiene los elementos copiados de la colección especificada.Initializes a new instance of the ObservableCollection<T> class that contains elements copied from the specified collection.

ObservableCollection<T>(List<T>) ObservableCollection<T>(List<T>) ObservableCollection<T>(List<T>) ObservableCollection<T>(List<T>)

Inicializa una nueva instancia de la clase ObservableCollection<T> que contiene los elementos copiados de la lista especificada.Initializes a new instance of the ObservableCollection<T> class that contains elements copied from the specified list.

Métodos

Add(T) Add(T) Add(T) Add(T)

Agrega un objeto al final de Collection<T>.Adds an object to the end of the Collection<T>.

(Inherited from Collection<T>)
BlockReentrancy() BlockReentrancy() BlockReentrancy() BlockReentrancy()

No permite intentos reentrantes para cambiar esta colección.Disallows reentrant attempts to change this collection.

CheckReentrancy() CheckReentrancy() CheckReentrancy() CheckReentrancy()

Comprueba si se producen intentos reentrantes para cambiar esta colección.Checks for reentrant attempts to change this collection.

Clear() Clear() Clear() Clear()

Quita todos los elementos de Collection<T>.Removes all elements from the Collection<T>.

(Inherited from Collection<T>)
ClearItems() ClearItems() ClearItems() ClearItems()

Quita todos los elementos de la colección.Removes all items from the collection.

Contains(T) Contains(T) Contains(T) Contains(T)

Determina si un elemento se encuentra en Collection<T>.Determines whether an element is in the Collection<T>.

(Inherited from Collection<T>)
CopyTo(T[], Int32) CopyTo(T[], Int32) CopyTo(T[], Int32) CopyTo(T[], Int32)

Copia la totalidad de Collection<T> en una matriz Array unidimensional compatible, comenzando en el índice especificado de la matriz de destino.Copies the entire Collection<T> to a compatible one-dimensional Array, starting at the specified index of the target array.

(Inherited from Collection<T>)
Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina si el objeto especificado es igual al objeto actual.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetEnumerator() GetEnumerator() GetEnumerator() GetEnumerator()

Devuelve un enumerador que recorre en iteración la colección Collection<T>.Returns an enumerator that iterates through the Collection<T>.

(Inherited from Collection<T>)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Sirve como la función hash predeterminada.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Inherited from Object)
IndexOf(T) IndexOf(T) IndexOf(T) IndexOf(T)

Busca el objeto especificado y devuelve el índice de base cero de la primera aparición en todo el objeto Collection<T>.Searches for the specified object and returns the zero-based index of the first occurrence within the entire Collection<T>.

(Inherited from Collection<T>)
Insert(Int32, T) Insert(Int32, T) Insert(Int32, T) Insert(Int32, T)

Inserta un elemento en Collection<T> en el índice especificado.Inserts an element into the Collection<T> at the specified index.

(Inherited from Collection<T>)
InsertItem(Int32, T) InsertItem(Int32, T) InsertItem(Int32, T) InsertItem(Int32, T)

Inserta un elemento en el índice especificado de la colección.Inserts an item into the collection at the specified index.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

(Inherited from Object)
Move(Int32, Int32) Move(Int32, Int32) Move(Int32, Int32) Move(Int32, Int32)

Mueve el elemento situado en el índice especificado a una nueva ubicación en la colección.Moves the item at the specified index to a new location in the collection.

MoveItem(Int32, Int32) MoveItem(Int32, Int32) MoveItem(Int32, Int32) MoveItem(Int32, Int32)

Mueve el elemento situado en el índice especificado a una nueva ubicación en la colección.Moves the item at the specified index to a new location in the collection.

OnCollectionChanged(NotifyCollectionChangedEventArgs) OnCollectionChanged(NotifyCollectionChangedEventArgs) OnCollectionChanged(NotifyCollectionChangedEventArgs) OnCollectionChanged(NotifyCollectionChangedEventArgs)

Genera el evento CollectionChanged con los argumentos proporcionados.Raises the CollectionChanged event with the provided arguments.

OnPropertyChanged(PropertyChangedEventArgs) OnPropertyChanged(PropertyChangedEventArgs) OnPropertyChanged(PropertyChangedEventArgs) OnPropertyChanged(PropertyChangedEventArgs)

Genera el evento PropertyChanged con los argumentos proporcionados.Raises the PropertyChanged event with the provided arguments.

Remove(T) Remove(T) Remove(T) Remove(T)

Quita la primera aparición de un objeto específico de la interfaz Collection<T>.Removes the first occurrence of a specific object from the Collection<T>.

(Inherited from Collection<T>)
RemoveAt(Int32) RemoveAt(Int32) RemoveAt(Int32) RemoveAt(Int32)

Quita el elemento situado en el índice especificado de Collection<T>.Removes the element at the specified index of the Collection<T>.

(Inherited from Collection<T>)
RemoveItem(Int32) RemoveItem(Int32) RemoveItem(Int32) RemoveItem(Int32)

Quita de la colección el elemento situado en el índice especificado.Removes the item at the specified index of the collection.

SetItem(Int32, T) SetItem(Int32, T) SetItem(Int32, T) SetItem(Int32, T)

Reemplaza el elemento del índice especificado.Replaces the element at the specified index.

ToString() ToString() ToString() ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Inherited from Object)

Eventos

CollectionChanged CollectionChanged CollectionChanged CollectionChanged

Se produce cuando un elemento se agrega, se elimina, se cambiar o se mueve, o bien se actualiza toda la lista.Occurs when an item is added, removed, changed, moved, or the entire list is refreshed.

PropertyChanged PropertyChanged PropertyChanged PropertyChanged

Tiene lugar cuando cambia un valor de propiedad.Occurs when a property value changes.

Implementaciones de interfaz explícitas

ICollection.CopyTo(Array, Int32) ICollection.CopyTo(Array, Int32) ICollection.CopyTo(Array, Int32) ICollection.CopyTo(Array, Int32)

Copia los elementos de ICollection en Array, empezando por un índice determinado de Array.Copies the elements of the ICollection to an Array, starting at a particular Array index.

(Inherited from Collection<T>)
IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator()

Devuelve un enumerador que recorre en iteración una colección.Returns an enumerator that iterates through a collection.

(Inherited from Collection<T>)
IList.Add(Object) IList.Add(Object) IList.Add(Object) IList.Add(Object)

Agrega un elemento a IList.Adds an item to the IList.

(Inherited from Collection<T>)
IList.Contains(Object) IList.Contains(Object) IList.Contains(Object) IList.Contains(Object)

Determina si IList contiene un valor específico.Determines whether the IList contains a specific value.

(Inherited from Collection<T>)
IList.IndexOf(Object) IList.IndexOf(Object) IList.IndexOf(Object) IList.IndexOf(Object)

Determina el índice de un elemento específico de IList.Determines the index of a specific item in the IList.

(Inherited from Collection<T>)
IList.Insert(Int32, Object) IList.Insert(Int32, Object) IList.Insert(Int32, Object) IList.Insert(Int32, Object)

Inserta un elemento en la interfaz IList, en el índice especificado.Inserts an item into the IList at the specified index.

(Inherited from Collection<T>)
IList.Remove(Object) IList.Remove(Object) IList.Remove(Object) IList.Remove(Object)

Quita la primera aparición de un objeto específico de la interfaz IList.Removes the first occurrence of a specific object from the IList.

(Inherited from Collection<T>)
INotifyPropertyChanged.PropertyChanged INotifyPropertyChanged.PropertyChanged INotifyPropertyChanged.PropertyChanged INotifyPropertyChanged.PropertyChanged

Tiene lugar cuando cambia un valor de propiedad.Occurs when a property value changes.

Propiedades

Count Count Count Count

Obtiene el número de elementos contenido realmente en Collection<T>.Gets the number of elements actually contained in the Collection<T>.

(Inherited from Collection<T>)
ICollection.IsSynchronized ICollection.IsSynchronized ICollection.IsSynchronized ICollection.IsSynchronized

Obtiene un valor que indica si el acceso a la interfaz ICollection está sincronizado (es seguro para subprocesos).Gets a value indicating whether access to the ICollection is synchronized (thread safe).

(Inherited from Collection<T>)
ICollection.SyncRoot ICollection.SyncRoot ICollection.SyncRoot ICollection.SyncRoot

Obtiene un objeto que se puede usar para sincronizar el acceso a ICollection.Gets an object that can be used to synchronize access to the ICollection.

(Inherited from Collection<T>)
ICollection<T>.IsReadOnly ICollection<T>.IsReadOnly ICollection<T>.IsReadOnly ICollection<T>.IsReadOnly

Obtiene un valor que indica si ICollection<T> es de solo lectura.Gets a value indicating whether the ICollection<T> is read-only.

(Inherited from Collection<T>)
IList.IsFixedSize IList.IsFixedSize IList.IsFixedSize IList.IsFixedSize

Obtiene un valor que indica si la interfaz IList tiene un tamaño fijo.Gets a value indicating whether the IList has a fixed size.

(Inherited from Collection<T>)
IList.IsReadOnly IList.IsReadOnly IList.IsReadOnly IList.IsReadOnly

Obtiene un valor que indica si IList es de solo lectura.Gets a value indicating whether the IList is read-only.

(Inherited from Collection<T>)
IList.Item[Int32] IList.Item[Int32] IList.Item[Int32] IList.Item[Int32]

Obtiene o establece el elemento en el índice especificado.Gets or sets the element at the specified index.

(Inherited from Collection<T>)
Items Items Items Items

Obtiene un contenedor de IList<T> para la colección Collection<T>.Gets a IList<T> wrapper around the Collection<T>.

(Inherited from Collection<T>)
Item[Int32] Item[Int32] Item[Int32] Item[Int32]

Obtiene o establece el elemento en el índice especificado.Gets or sets the element at the specified index.

(Inherited from Collection<T>)

Métodos de extensión

CopyToDataTable<T>(IEnumerable<T>) CopyToDataTable<T>(IEnumerable<T>) CopyToDataTable<T>(IEnumerable<T>) CopyToDataTable<T>(IEnumerable<T>)

Devuelve un objeto DataTable que contiene copias de los objetos DataRow, dado un objeto IEnumerable<T> de entrada donde el parámetro T genérico es 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) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption)

Copia objetos DataRow en el objeto DataTable especificado, dado un objeto IEnumerable<T> de entrada donde el parámetro T genérico es 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) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler)

Copia objetos DataRow en el objeto DataTable especificado, dado un objeto IEnumerable<T> de entrada donde el parámetro T genérico es DataRow.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable)

Convierte los elementos de IEnumerable en el tipo especificado.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable)

Filtra los elementos de IEnumerable en función de un tipo especificado.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable)

Habilita la paralelización de una consulta.Enables parallelization of a query.

AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable)

Convierte una interfaz IEnumerable en IQueryable.Converts an IEnumerable to an IQueryable.

Ancestors<T>(IEnumerable<T>) Ancestors<T>(IEnumerable<T>) Ancestors<T>(IEnumerable<T>) Ancestors<T>(IEnumerable<T>)

Devuelve una colección de elementos que contiene los antecesores de todos los nodos de la colección de origen.Returns a collection of elements that contains the ancestors of every node in the source collection.

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

Devuelve una colección de elementos filtrada que contiene los antecesores de todos los nodos de la colección de origen.Returns a filtered collection of elements that contains the ancestors of every node in the source collection. En la colección sólo se incluyen los elementos que tienen un objeto XName coincidente.Only elements that have a matching XName are included in the collection.

DescendantNodes<T>(IEnumerable<T>) DescendantNodes<T>(IEnumerable<T>) DescendantNodes<T>(IEnumerable<T>) DescendantNodes<T>(IEnumerable<T>)

Devuelve una colección de los nodos descendientes de todos los documentos y elementos de la colección de origen.Returns a collection of the descendant nodes of every document and element in the source collection.

Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>)

Devuelve una colección de elementos que contiene los elementos descendientes de todos los elementos y documentos de la colección de origen.Returns a collection of elements that contains the descendant elements of every element and document in the source collection.

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

Devuelve una colección filtrada de elementos que contiene los elementos descendientes de todos los elementos y documentos de la colección de origen.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. En la colección sólo se incluyen los elementos que tienen un objeto XName coincidente.Only elements that have a matching XName are included in the collection.

Elements<T>(IEnumerable<T>) Elements<T>(IEnumerable<T>) Elements<T>(IEnumerable<T>) Elements<T>(IEnumerable<T>)

Devuelve una colección de los elementos secundarios de todos los elementos y documentos de la colección de origen.Returns a collection of the child elements of every element and document in the source collection.

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

Devuelve una colección filtrada de los elementos secundarios de todos los elementos y documentos de la colección de origen.Returns a filtered collection of the child elements of every element and document in the source collection. En la colección sólo se incluyen los elementos que tienen un objeto XName coincidente.Only elements that have a matching XName are included in the collection.

InDocumentOrder<T>(IEnumerable<T>) InDocumentOrder<T>(IEnumerable<T>) InDocumentOrder<T>(IEnumerable<T>) InDocumentOrder<T>(IEnumerable<T>)

Devuelve una colección de nodos que contiene todos los nodos de la colección de origen, clasificados por documento.Returns a collection of nodes that contains all nodes in the source collection, sorted in document order.

Nodes<T>(IEnumerable<T>) Nodes<T>(IEnumerable<T>) Nodes<T>(IEnumerable<T>) Nodes<T>(IEnumerable<T>)

Devuelve una colección de los nodos secundarios de todos los documentos y elementos de la colección de origen.Returns a collection of the child nodes of every document and element in the source collection.

Remove<T>(IEnumerable<T>) Remove<T>(IEnumerable<T>) Remove<T>(IEnumerable<T>) Remove<T>(IEnumerable<T>)

Quita todos los nodos de la colección de origen de su nodo primario.Removes every node in the source collection from its parent node.

Se aplica a

Consulte también: