Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original.
Traducción
Original

ObservableCollection(T) (Clase)

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.

Espacio de nombres:  System.Collections.ObjectModel
Ensamblado:  System (en System.dll)
XMLNS para XAML: No asignado a un xmlns.

[<SerializableAttribute>]
type ObservableCollection<'T> =  
    class
        inherit Collection<'T>
        interface INotifyCollectionChanged
        interface INotifyPropertyChanged
    end
Vea la sección Comentarios.

Parámetros de tipo

T

Tipo de los elementos de la colección.

El tipo ObservableCollection(T) expone los siguientes miembros.

  NombreDescripción
Método públicoObservableCollection(T)()Inicializa una nueva instancia de la clase ObservableCollection(T).
Método públicoObservableCollection(T)(IEnumerable(T))Inicializa una nueva instancia de la clase ObservableCollection(T) que contiene los elementos copiados de la colección especificada.
Método públicoObservableCollection(T)(List(T))Inicializa una nueva instancia de la clase ObservableCollection(T) que contiene los elementos copiados de la lista especificada.
Arriba

  NombreDescripción
Propiedad públicaCountObtiene el número de elementos contenido realmente en Collection(T). (Se hereda de Collection(T)).
Propiedad públicaItemObtiene o establece el elemento que se encuentra en el índice especificado. (Se hereda de Collection(T)).
Propiedad protegidaItemsObtiene un contenedor de IList(T) para la colección Collection(T). (Se hereda de Collection(T)).
Arriba

  NombreDescripción
Método públicoAddAgrega un objeto al final de la colección Collection(T). (Se hereda de Collection(T)).
Método protegidoBlockReentrancyNo permite intentos reentrantes por cambiar esta colección.
Método protegidoCheckReentrancyComprueba si se producen intentos reentrantes por cambiar esta colección.
Método públicoClearQuita todos los elementos de Collection(T). (Se hereda de Collection(T)).
Método protegidoClearItemsQuita todos los elementos de la colección. (Invalida a Collection(T).ClearItems()).
Método públicoContainsDetermina si un elemento se encuentra en la colección Collection(T). (Se hereda de Collection(T)).
Método públicoCopyToCopia la totalidad de Collection(T) en una matriz Array unidimensional y compatible, comenzando en el índice especificado de la matriz de destino. (Se hereda de Collection(T)).
Método públicoEquals(Object)Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object).
Método protegidoFinalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método públicoGetEnumeratorDevuelve un enumerador que recorre en iteración la colección Collection(T). (Se hereda de Collection(T)).
Método públicoGetHashCodeActúa como función hash para un tipo concreto. (Se hereda de Object).
Método públicoGetType Obtiene el Type de la instancia actual. (Se hereda de Object).
Método públicoIndexOfBusca el objeto especificado y devuelve el índice de base cero de la primera aparición en toda la colección Collection(T). (Se hereda de Collection(T)).
Método públicoInsertInserta un elemento en el índice especificado de la colección Collection(T). (Se hereda de Collection(T)).
Método protegidoInsertItemInserta un elemento en el índice especificado de la colección. (Invalida a Collection(T).InsertItem(Int32, T)).
Método protegidoMemberwiseClone Crea una copia superficial del Object actual. (Se hereda de Object).
Método públicoMoveMueve el elemento situado en el índice especificado a una nueva ubicación en la colección.
Método protegidoMoveItemMueve el elemento situado en el índice especificado a una nueva ubicación en la colección.
Método protegidoOnCollectionChangedProvoca el evento CollectionChanged con los argumentos proporcionados.
Método protegidoOnPropertyChangedProvoca el evento PropertyChanged con los argumentos proporcionados.
Método públicoRemoveQuita la primera aparición de un objeto específico de la interfaz Collection(T). (Se hereda de Collection(T)).
Método públicoRemoveAtQuita el elemento en el índice especificado de Collection(T). (Se hereda de Collection(T)).
Método protegidoRemoveItemQuita de la colección el elemento situado en el índice especificado. (Invalida a Collection(T).RemoveItem(Int32)).
Método protegidoSetItemReemplaza el elemento del índice especificado. (Invalida a Collection(T).SetItem(Int32, T)).
Método públicoToString Retorna una cadena que representa al objeto actual. (Se hereda de Object).
Arriba

  NombreDescripción
Evento públicoCollectionChangedSe produce cuando se agrega, quita, cambia, mueve un elemento o se actualiza la lista completa.
Evento protegidoPropertyChangedSe produce cuando cambia el valor de una propiedad.
Arriba

  NombreDescripción
Implementación explícita de interfacesMétodo privadoICollection.CopyToCopia los elementos de la interfaz ICollection a un objeto Array, a partir de un índice determinado de la clase Array. (Se hereda de Collection(T)).
Implementación explícita de interfacesPropiedad privadaICollection(T).IsReadOnlyObtiene un valor que indica si ICollection(T) es de solo lectura. (Se hereda de Collection(T)).
Implementación explícita de interfacesPropiedad privadaICollection.IsSynchronizedObtiene un valor que indica si el acceso a ICollection está sincronizado (es seguro para la ejecución de subprocesos). (Se hereda de Collection(T)).
Implementación explícita de interfacesPropiedad privadaICollection.SyncRootObtiene un objeto que se puede utilizar para sincronizar el acceso a ICollection. (Se hereda de Collection(T)).
Implementación explícita de interfacesMétodo privadoIEnumerable.GetEnumeratorDevuelve un enumerador que recorre en iteración una colección. (Se hereda de Collection(T)).
Implementación explícita de interfacesMétodo privadoIList.AddAgrega un elemento a la interfaz IList. (Se hereda de Collection(T)).
Implementación explícita de interfacesMétodo privadoIList.ContainsDetermina si la interfaz IList contiene un valor específico. (Se hereda de Collection(T)).
Implementación explícita de interfacesMétodo privadoIList.IndexOfDetermina el índice de un elemento específico en la interfaz IList. (Se hereda de Collection(T)).
Implementación explícita de interfacesMétodo privadoIList.InsertInserta un elemento en la interfaz IList, en el índice especificado. (Se hereda de Collection(T)).
Implementación explícita de interfacesPropiedad privadaIList.IsFixedSizeObtiene un valor que indica si IList tiene un tamaño fijo. (Se hereda de Collection(T)).
Implementación explícita de interfacesPropiedad privadaIList.IsReadOnlyObtiene un valor que indica si IList es de sólo lectura. (Se hereda de Collection(T)).
Implementación explícita de interfacesPropiedad privadaIList.ItemObtiene o establece el elemento que se encuentra en el índice especificado. (Se hereda de Collection(T)).
Implementación explícita de interfacesMétodo privadoIList.RemoveQuita la primera aparición de un objeto específico de la interfaz IList. (Se hereda de Collection(T)).
Implementación explícita de interfacesEvento privadoINotifyPropertyChanged.PropertyChangedSe produce cuando cambia el valor de una propiedad.
Arriba

En muchos casos, los datos con los que se trabaja son una colección de objetos. Por ejemplo, un escenario común en el enlace de datos es el uso de un control ItemsControl como ListBox, ListView o TreeView para mostrar una colección de registros.

Es posible enumerar cualquier colección que implementa la interfaz IEnumerable. Sin embargo, para configurar enlaces dinámicos de modo que las inserciones o eliminaciones que se realicen en la colección actualicen la UI de forma automática, la colección debe implementar la interfaz INotifyCollectionChanged. Esta interfaz expone el evento CollectionChanged, que debe provocarse siempre que se realicen cambios en la colección subyacente.

WPF proporciona la clase ObservableCollection(T), que es una implementación integrada de una recolección de datos que implementa la interfaz INotifyCollectionChanged.

Antes de implementar su propia colección, considere la posibilidad de utilizar ObservableCollection(T) o una de las clases de colección existentes, como List(T), Collection(T) y BindingList(T), entre otras muchas. Si cuenta con un escenario avanzado y desea implementar su propia colección, considere la posibilidad de utilizar IList, que proporciona una colección no genérica de objetos a los que se puede obtener acceso individualmente por índice. La implementación de IList proporciona el mayor rendimiento con el motor de enlace de datos.

NotaNota

Para que se admita totalmente la transferencia de los valores de datos desde los objetos de origen de enlace hasta los destinos de enlace, cada objeto de la colección que admita propiedades enlazables deberá implementar un mecanismo de notificación de cambio de propiedades adecuado, como la interfaz INotifyPropertyChanged.

Para obtener más información, vea "Enlazar a colecciones" en Información general sobre el enlace de datos.

Notas sobre uso de XAML

ObservableCollection(T) se puede utilizar como un elemento de objeto de XAML en Windows Presentation Foundation (WPF), en las versiones 3.0 y 3.5. Sin embargo, el uso tiene las limitaciones sustanciales.

  • El objeto ObservableCollection(T) debe ser el elemento raíz porque el atributo x:TypeArguments que debe usarse para especificar el tipo restringido del objeto ObservableCollection(T) genérico solo se admite en el elemento de objeto para el elemento raíz.

  • Debe declarar un atributo x:Class (que implica que la acción de compilación de este archivo XAML debe ser Page o alguna otra acción de compilación que compile el XAML).

  • El objeto ObservableCollection(T) se encuentra en un espacio de nombres y ensamblado que no están asignados inicialmente al espacio de nombres XML predeterminado. Debe asignar un prefijo al espacio de nombres y ensamblado y, a continuación, usar dicho prefijo en la etiqueta del elemento de objeto para ObservableCollection(T).

Un modo más sencillo de usar las capacidades de ObservableCollection(T) de XAML en una aplicación es declarar su propia clase de colección personalizada no genérica que se derive de ObservableCollection(T) y restringirla a un tipo específico. A continuación, asigne el ensamblado que contenga esta clase y haga referencia a él como un elemento de objeto en el XAML.

This example shows how to create and bind to a collection that derives from the ObservableCollection(T) class, which is a collection class that provides notifications when items get added or removed.

The following example shows the implementation of a NameList collection:

No hay ningún ejemplo de código disponible o este idioma no es compatible.

You can make the collection available for binding the same way you would with other common language runtime (CLR) objects, as described in Cómo: Hacer que los datos estén disponibles para el enlace en XAML. For example, you can instantiate the collection in XAML and specify the collection as a resource, as shown here:



<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:c="clr-namespace:SDKSample"
  x:Class="SDKSample.Window1"
  Width="400"
  Height="280"
  Title="MultiBinding Sample">
	
  <Window.Resources>
    <c:NameList x:Key="NameListData"/>


...


</Window.Resources>


You can then bind to the collection:


<ListBox Width="200"
         ItemsSource="{Binding Source={StaticResource NameListData}}"
         ItemTemplate="{StaticResource NameItemTemplate}"
         IsSynchronizedWithCurrentItem="True"/>


The definition of NameItemTemplate is not shown here.

NotaNota

The objects in your collection must satisfy the requirements described in the Información general sobre orígenes de enlaces. In particular, if you are using OneWay or TwoWay (for example, you want your UI to update when the source properties change dynamically), you must implement a suitable property changed notification mechanism such as the INotifyPropertyChanged interface.

For more information, see the Binding to Collections section in the Información general sobre el enlace de datos.

.NET Framework

Compatible con: 4, 3.5, 3.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft