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

Definizione

Rappresenta una raccolta di dati dinamica che fornisce notifiche in caso di aggiunta o rimozione di elementi oppure quando viene aggiornato l'intero elenco.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

Parametri di tipo

T

Tipo di elementi contenuti nella raccolta.The type of elements in the collection.

Ereditarietà
ObservableCollection<T>ObservableCollection<T>ObservableCollection<T>ObservableCollection<T>
Derivato
Attributi
Implementazioni

Commenti

In molti casi, i dati con cui si lavora è una raccolta di oggetti.In many cases the data that you work with is a collection of objects. Uno scenario comune in data binding, ad esempio, consiste nell'usare ItemsControl un oggetto ListBox, ad ListViewesempio, TreeView o per visualizzare una raccolta di record.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.

È possibile enumerare qualsiasi raccolta che implementi IEnumerable l'interfaccia.You can enumerate over any collection that implements the IEnumerable interface. Tuttavia, per configurare i binding dinamici in modo che gli inserimenti o le eliminazioni nella raccolta Interfaccia utenteUI aggiornino automaticamente l'oggetto, la INotifyCollectionChanged raccolta deve implementare l'interfaccia.However, to set up dynamic bindings so that insertions or deletions in the collection update the Interfaccia utenteUI automatically, the collection must implement the INotifyCollectionChanged interface. Questa interfaccia espone l' CollectionChanged evento, un evento che deve essere generato ogni volta che viene modificata la raccolta sottostante.This interface exposes the CollectionChanged event, an event that should be raised whenever the underlying collection changes.

WPFWPFfornisce la ObservableCollection<T> classe, che è un'implementazione incorporata di una raccolta di dati che implementa l' INotifyCollectionChanged interfaccia.provides the ObservableCollection<T> class, which is a built-in implementation of a data collection that implements the INotifyCollectionChanged interface.

Prima di implementare una raccolta personalizzata, prendere ObservableCollection<T> in List<T>considerazione l'uso di o di una delle classi di Collection<T>raccolte esistenti BindingList<T>, ad esempio, e, tra molte altre.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. Se si dispone di uno scenario avanzato e si desidera implementare una raccolta personalizzata, è IListconsigliabile utilizzare, che fornisce una raccolta non generica di oggetti a cui è possibile accedere singolarmente tramite indice.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. L' IList implementazione garantisce le migliori prestazioni con il motore di data binding.Implementing IList provides the best performance with the data binding engine.

Nota

Per supportare completamente il trasferimento dei valori di dati dagli oggetti di origine del binding alle destinazioni di associazione, ogni oggetto della raccolta che supporta le proprietà associabili deve implementare un meccanismo INotifyPropertyChanged di notifica modificato della proprietà appropriato, ad esempio interfaccia.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.

Per ulteriori informazioni, vedere "associazione alle raccolte" in Cenni preliminari sul data binding.For more information, see "Binding to Collections" in Data Binding Overview.

Note sull'utilizzo di XAMLNotes on XAML Usage

ObservableCollection<T>può essere usato come elemento oggetto XAML in Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF), nelle versioni 3,0 e 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. Tuttavia, l'utilizzo presenta limitazioni sostanziali.However, the usage has substantial limitations.

  • ObservableCollection<T>deve essere l'elemento radice, perché l' x:TypeArguments attributo che deve essere utilizzato per specificare il tipo vincolato di Generic ObservableCollection<T> è supportato solo sull'elemento oggetto per l'elemento radice.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.

  • È necessario dichiarare un x:Class attributo, che comporta che l'azione di compilazione per questo file XAML debba essere Page o un'altra azione di compilazione che compila il codice 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>si trova in uno spazio dei nomi e un assembly di cui non è stato eseguito il mapping iniziale allo spazio dei nomi XML predefinito.ObservableCollection<T> is in a namespace and assembly that are not initially mapped to the default XML namespace. È necessario eseguire il mapping di un prefisso per lo spazio dei nomi e l'assembly e quindi utilizzare tale prefisso sul ObservableCollection<T>tag dell'elemento oggetto per.You must map a prefix for the namespace and assembly, and then use that prefix on the object element tag for ObservableCollection<T>.

Un modo più semplice per usare ObservableCollection<T> le funzionalità di XAML in un'applicazione consiste nel dichiarare una classe di raccolte personalizzata non generica che deriva da ObservableCollection<T>e vincolarla a un tipo specifico.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. Eseguire quindi il mapping dell'assembly che contiene questa classe e farvi riferimento come elemento oggetto nel codice XAML.Then map the assembly that contains this class, and reference it as an object element in your XAML.

Costruttori

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

Inizializza una nuova istanza della classe 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>)

Inizializza una nuova istanza della classe ObservableCollection<T> che contiene gli elementi copiati dalla raccolta specificata.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>)

Inizializza una nuova istanza della classe ObservableCollection<T> che contiene gli elementi copiati dall'elenco specificato.Initializes a new instance of the ObservableCollection<T> class that contains elements copied from the specified list.

Metodi

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

Aggiunge un oggetto alla fine di Collection<T>.Adds an object to the end of the Collection<T>.

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

Non consente tentativi di routine rientranti per modificare la raccolta.Disallows reentrant attempts to change this collection.

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

Cerca i tentativi di routine rientranti per modificare la raccolta.Checks for reentrant attempts to change this collection.

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

Rimuove tutti gli elementi da Collection<T>.Removes all elements from the Collection<T>.

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

Rimuove tutti gli elementi dalla raccolta.Removes all items from the collection.

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

Determina se un elemento è incluso in 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 l'intero oggetto Collection<T> in un oggetto Array compatibile unidimensionale, a partire dall'indice specificato della matrice di destinazione.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 se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

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

Restituisce un enumeratore che esegue l'iterazione di Collection<T>.Returns an enumerator that iterates through the Collection<T>.

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

Funge da funzione hash predefinita.Serves as the default hash function.

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

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

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

Cerca l'oggetto specificato e restituisce l'indice in base zero della prima occorrenza nell'intera classe 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)

Inserisce un elemento in Collection<T> in corrispondenza dell'indice specificato.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)

Inserisce un elemento nella raccolta in corrispondenza dell'indice specificato.Inserts an item into the collection at the specified index.

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

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

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

Sposta l'elemento in corrispondenza dell'indice specificato in una nuova posizione dell'insieme.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)

Sposta l'elemento in corrispondenza dell'indice specificato in una nuova posizione dell'insieme.Moves the item at the specified index to a new location in the collection.

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

Genera l'evento CollectionChanged con gli argomenti forniti.Raises the CollectionChanged event with the provided arguments.

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

Genera l'evento PropertyChanged con gli argomenti forniti.Raises the PropertyChanged event with the provided arguments.

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

Rimuove la prima occorrenza di un oggetto specifico da 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)

Rimuove l'elemento in corrispondenza dell'indice specificato di 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)

Rimuove dall'insieme l'elemento in corrispondenza dell'indice specificato.Removes the item at the specified index of the collection.

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

Sostituisce l'elemento in corrispondenza dell'indice specificato.Replaces the element at the specified index.

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

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Inherited from Object)

Eventi

CollectionChanged CollectionChanged CollectionChanged CollectionChanged

Si verifica quando un elemento viene aggiunto, rimosso, modificato o spostato oppure quando viene aggiornato l'intero elenco.Occurs when an item is added, removed, changed, moved, or the entire list is refreshed.

PropertyChanged PropertyChanged PropertyChanged PropertyChanged

Generato quando il valore di una proprietà cambia.Occurs when a property value changes.

Implementazioni dell'interfaccia esplicita

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

Copia gli elementi di ICollection in Array a partire da un particolare indice 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()

Restituisce un enumeratore che consente di eseguire l'iterazione di una raccolta.Returns an enumerator that iterates through a collection.

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

Aggiunge 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)

Stabilisce se IList contiene un valore specifico.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 l'indice di un elemento specifico in 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)

Inserisce un elemento nell'oggetto IList in corrispondenza dell'indice specificato.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)

Rimuove la prima occorrenza di un oggetto specifico da IList.Removes the first occurrence of a specific object from the IList.

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

Generato quando il valore di una proprietà cambia.Occurs when a property value changes.

Proprietà

Count Count Count Count

Ottiene il numero di elementi effettivamente contenuti nell'oggetto 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

Ottiene un valore che indica se l'accesso a ICollection è sincronizzato (thread-safe).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

Ottiene un oggetto che può essere usato per sincronizzare l'accesso 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

Ottiene un valore che indica se ICollection<T> è di sola lettura.Gets a value indicating whether the ICollection<T> is read-only.

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

Ottiene un valore che indica se IList ha dimensioni fisse.Gets a value indicating whether the IList has a fixed size.

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

Ottiene un valore che indica se IList è di sola lettura.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]

Ottiene o imposta l'elemento in corrispondenza dell'indice specificato.Gets or sets the element at the specified index.

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

Ottiene un wrapper dell'oggetto IList<T> per l'insieme Collection<T>.Gets a IList<T> wrapper around the Collection<T>.

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

Ottiene o imposta l'elemento in corrispondenza dell'indice specificato.Gets or sets the element at the specified index.

(Inherited from Collection<T>)

Metodi di estensione

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

Restituisce un oggetto DataTable che contiene copie degli oggetti DataRow, dato un oggetto IEnumerable<T> di input dove il parametro generico DataRow è T.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 gli oggetti DataRow nell'oggetto DataTable specificato, dato un oggetto IEnumerable<T> di input dove il parametro generico 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) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler)

Copia gli oggetti DataRow nell'oggetto DataTable specificato, dato un oggetto IEnumerable<T> di input dove il parametro generico 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) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable)

Esegue il cast degli elementi di un oggetto IEnumerable nel tipo specificato.Casts the elements of an IEnumerable to the specified type.

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

Filtra gli elementi di un oggetto IEnumerable in base a un tipo specificato.Filters the elements of an IEnumerable based on a specified type.

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

Consente la parallelizzazione di una query.Enables parallelization of a query.

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

Converte un oggetto IEnumerable in un oggetto IQueryable.Converts an IEnumerable to an IQueryable.

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

Restituisce una raccolta di elementi che contiene i predecessori di ciascun nodo nella raccolta di origine.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)

Restituisce una raccolta di elementi filtrati che contiene i predecessori di ciascun nodo nella raccolta di origine.Returns a filtered collection of elements that contains the ancestors of every node in the source collection. Solo gli elementi che hanno un oggetto XName corrispondente vengono inclusi nella raccolta.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>)

Restituisce una raccolta di nodi discendenti di ciascun documento ed elemento nella raccolta di origine.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>)

Restituisce una raccolta di elementi che contiene gli elementi discendenti di ciascun elemento e documento nella raccolta di origine.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)

Restituisce una raccolta filtrata di elementi che contiene gli elementi discendenti di ciascun elemento e documento nella raccolta di origine.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. Solo gli elementi che hanno un oggetto XName corrispondente vengono inclusi nella raccolta.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>)

Restituisce una raccolta di elementi figlio di ciascun elemento e documento nella raccolta di origine.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)

Restituisce una raccolta filtrata degli elementi figlio di ciascun elemento e documento nella raccolta di origine.Returns a filtered collection of the child elements of every element and document in the source collection. Solo gli elementi che hanno un oggetto XName corrispondente vengono inclusi nella raccolta.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>)

Restituisce una raccolta di nodi che contiene tutti i nodi nella raccolta di origine ordinati in base all'ordine con cui sono riportati nel 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>)

Restituisce una raccolta di nodi figlio di ciascun documento ed elemento nella raccolta di origine.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>)

Rimuove ciascun nodo nella raccolta di origine dal nodo padre.Removes every node in the source collection from its parent node.

Si applica a

Vedi anche