Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet Dieses Thema bewerten.

ObservableCollection(Of T)-Klasse

Stellt eine dynamische Datenauflistung dar, die Benachrichtigungen bereitstellt, wenn Elemente hinzugefügt oder entfernt werden oder wenn die gesamte Liste aktualisiert wird.

Namespace:  System.Collections.ObjectModel
Assembly:  System (in System.dll)
XMLNS für XAML: Keinem xmlns zugeordnet.
[SerializableAttribute]
public class ObservableCollection<T> : Collection<T>, 
	INotifyCollectionChanged, INotifyPropertyChanged

Siehe Hinweise.

Typparameter

T

Der Typ der Elemente in der Auflistung.

Der ObservableCollection(Of T)-Typ macht die folgenden Member verfügbar.

  Name Beschreibung
Öffentliche Methode ObservableCollection(Of T) Initialisiert eine neue Instanz der ObservableCollection(Of T)-Klasse.
Öffentliche Methode ObservableCollection(Of T)(IEnumerable(Of T)) Initialisiert eine neue Instanz der ObservableCollection(Of T)-Klasse, die aus der angegebenen Auflistung kopierte Elemente enthält.
Öffentliche Methode ObservableCollection(Of T)(List(Of T)) Initialisiert eine neue Instanz der ObservableCollection(Of T)-Klasse, die aus der angegebenen Liste kopierte Elemente enthält.
Zum Seitenanfang
  Name Beschreibung
Öffentliche Eigenschaft Count Ruft die Anzahl der Elemente ab, die tatsächlich in der Collection(Of T) enthalten sind. (Von Collection(Of T) geerbt.)
Öffentliche Eigenschaft Item Ruft das Element am angegebenen Index ab oder legt dieses fest. (Von Collection(Of T) geerbt.)
Geschützte Eigenschaft Items Ruft den Collection(Of T)-Wrapper ab, der IList(Of T) einbindet. (Von Collection(Of T) geerbt.)
Zum Seitenanfang
  Name Beschreibung
Öffentliche Methode Add Fügt am Ende der Collection(Of T) ein Objekt hinzu. (Von Collection(Of T) geerbt.)
Geschützte Methode BlockReentrancy Verweigert das Ändern dieser Auflistung durch wiedereintretende Versuche.
Geschützte Methode CheckReentrancy Sucht wiedereintretende Versuche, diese Auflistung zu ändern.
Öffentliche Methode Clear Entfernt alle Elemente aus der Collection(Of T). (Von Collection(Of T) geerbt.)
Geschützte Methode ClearItems Entfernt alle Elemente aus der Auflistung. (Überschreibt Collection(Of T).ClearItems.)
Öffentliche Methode Contains Bestimmt, ob sich ein Element in der Collection(Of T) befindet. (Von Collection(Of T) geerbt.)
Öffentliche Methode CopyTo Kopiert die gesamte Collection(Of T) in ein kompatibles eindimensionales Array, beginnend am angegebenen Index des Zielarrays. (Von Collection(Of T) geerbt.)
Öffentliche Methode Equals(Object) Bestimmt, ob das angegebene Object und das aktuelle Object gleich sind. (Von Object geerbt.)
Geschützte Methode Finalize Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche Methode GetEnumerator Gibt einen Enumerator zurück, der die Collection(Of T) durchläuft. (Von Collection(Of T) geerbt.)
Öffentliche Methode GetHashCode Fungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.)
Öffentliche Methode GetType Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Öffentliche Methode IndexOf Sucht nach dem angegebenen Objekt und gibt den nullbasierten Index des ersten Vorkommens innerhalb der gesamten Collection(Of T) zurück. (Von Collection(Of T) geerbt.)
Öffentliche Methode Insert Fügt am angegebenen Index ein Element in die Collection(Of T) ein. (Von Collection(Of T) geerbt.)
Geschützte Methode InsertItem Fügt ein Element am angegebenen Index in die Auflistung ein. (Überschreibt Collection(Of T).InsertItem(Int32, T).)
Geschützte Methode MemberwiseClone Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche Methode Move Verschiebt das Element am angegebenen Index an eine neue Position in der Auflistung.
Geschützte Methode MoveItem Verschiebt das Element am angegebenen Index an eine neue Position in der Auflistung.
Geschützte Methode OnCollectionChanged Löst das CollectionChanged-Ereignis mit den angegebenen Argumenten aus.
Geschützte Methode OnPropertyChanged Löst das PropertyChanged-Ereignis mit den angegebenen Argumenten aus.
Öffentliche Methode Remove Entfernt das erste Vorkommen eines bestimmten Objekts aus der Collection(Of T). (Von Collection(Of T) geerbt.)
Öffentliche Methode RemoveAt Entfernt das Element am angegebenen Index aus der Collection(Of T). (Von Collection(Of T) geerbt.)
Geschützte Methode RemoveItem Entfernt das Element am angegebenen Index aus der Auflistung. (Überschreibt Collection(Of T).RemoveItem(Int32).)
Geschützte Methode SetItem Ersetzt das Element am angegebenen Index. (Überschreibt Collection(Of T).SetItem(Int32, T).)
Öffentliche Methode ToString Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Zum Seitenanfang
  Name Beschreibung
Öffentliches Ereignis CollectionChanged Tritt ein, wenn ein Element hinzugefügt, entfernt, geändert oder verschoben wird oder wenn die gesamte Liste aktualisiert wird.
Geschütztes Ereignis PropertyChanged Tritt ein, wenn sich ein Eigenschaftswert ändert.
Zum Seitenanfang
  Name Beschreibung
Explizite Schnittstellenimplementierung Private Methode ICollection.CopyTo Kopiert die Elemente der ICollection beginnend bei einem bestimmten Array-Index in ein Array. (Von Collection(Of T) geerbt.)
Explizite Schnittstellenimplementierung Private Eigenschaft ICollection(Of T).IsReadOnly Ruft einen Wert ab, der angibt, ob die ICollection(Of T) schreibgeschützt ist. (Von Collection(Of T) geerbt.)
Explizite Schnittstellenimplementierung Private Eigenschaft ICollection.IsSynchronized Ruft einen Wert ab, der angibt, ob der Zugriff auf ICollection synchronisiert (threadsicher) ist. (Von Collection(Of T) geerbt.)
Explizite Schnittstellenimplementierung Private Eigenschaft ICollection.SyncRoot Ruft ein Objekt ab, mit dem der Zugriff auf die ICollection synchronisiert werden kann. (Von Collection(Of T) geerbt.)
Explizite Schnittstellenimplementierung Private Methode IEnumerable.GetEnumerator Gibt einen Enumerator zurück, der eine Auflistung durchläuft. (Von Collection(Of T) geerbt.)
Explizite Schnittstellenimplementierung Private Methode IList.Add Fügt der IList ein Element hinzu. (Von Collection(Of T) geerbt.)
Explizite Schnittstellenimplementierung Private Methode IList.Contains Bestimmt, ob die IList einen bestimmten Wert enthält. (Von Collection(Of T) geerbt.)
Explizite Schnittstellenimplementierung Private Methode IList.IndexOf Bestimmt den Index eines bestimmten Elements in der IList. (Von Collection(Of T) geerbt.)
Explizite Schnittstellenimplementierung Private Methode IList.Insert Fügt ein Element am angegebenen Index in die IList ein. (Von Collection(Of T) geerbt.)
Explizite Schnittstellenimplementierung Private Eigenschaft IList.IsFixedSize Ruft einen Wert ab, der angibt, ob IList eine feste Größe hat. (Von Collection(Of T) geerbt.)
Explizite Schnittstellenimplementierung Private Eigenschaft IList.IsReadOnly Ruft einen Wert ab, der angibt, ob IList schreibgeschützt ist. (Von Collection(Of T) geerbt.)
Explizite Schnittstellenimplementierung Private Eigenschaft IList.Item Ruft das Element am angegebenen Index ab oder legt dieses fest. (Von Collection(Of T) geerbt.)
Explizite Schnittstellenimplementierung Private Methode IList.Remove Entfernt das erste Vorkommen eines bestimmten Objekts aus der IList. (Von Collection(Of T) geerbt.)
Explizite Schnittstellenimplementierung Privates Ereignis INotifyPropertyChanged.PropertyChanged Tritt ein, wenn sich ein Eigenschaftswert ändert.
Zum Seitenanfang

In vielen Fällen handelt es sich bei den Daten, die Sie verwenden, um eine Auflistung von Objekten. Ein übliches Szenario bei der Datenbindung besteht beispielsweise darin, ein ItemsControl zu verwenden, z. B. eine ListBox, eine ListView oder eine TreeView, um eine Auflistung von Datensätzen anzuzeigen.

Sie können jede Auflistung auflisten, die die IEnumerable-Schnittstelle implementiert. Um dynamische Bindungen einzurichten, bei denen die UI automatisch nach Einfügungen oder Löschungen in der Auflistung aktualisiert wird, muss die Auflistung die INotifyCollectionChanged-Schnittstelle implementieren. Diese Schnittstelle macht das CollectionChanged-Ereignis verfügbar, das bei jeder Änderung der zugrunde liegenden Auflistung ausgelöst werden sollte.

WPF stellt die ObservableCollection(Of T)-Klasse bereit, bei der es sich um eine integrierte Implementierung einer Datenauflistung handelt, die die INotifyCollectionChanged-Schnittstelle implementiert.

Statt eigene Auflistungen zu implementieren, können Sie auch ObservableCollection(Of T) bzw. eine vorhandene Auflistungsklasse wie List(Of T), Collection(Of T) oder BindingList(Of T) verwenden. Wenn Sie für ein erweitertes Szenario eine eigene Auflistung implementieren möchten, können Sie eine IList verwenden, die eine nicht generische Auflistung von Objekten bereitstellt, auf die jeweils über den Index zugegriffen werden kann. Durch die Implementierung von IList wird eine optimale Leistung mit dem Datenbindungsmodul erzielt.

Hinweis Hinweis

Um eine vollständige Unterstützung für die Übertragung von Datenwerten von Bindungsquellen-Objekten an Bindungsziele bereitzustellen, muss jedes Objekt in der Auflistung, die bindbare Eigenschaften unterstützt, einen entsprechenden Benachrichtigungsmechanismus bei Eigenschaftenänderungen implementieren, z. B. die INotifyPropertyChanged-Schnittstelle.

Weitere Informationen finden Sie in Übersicht über Datenbindung unter Binden an Auflistungen

Hinweise zur XAML-Verwendung

ObservableCollection(Of T) kann als ein XAML-Objektelement in Windows Presentation Foundation (WPF) in Versionen 3.0 und 3.5 verwendet werden. Die Verwendung hat jedoch beträchtliche Einschränkungen.

  • ObservableCollection(Of T) muss das Stammelement sein, da das x:TypeArguments-Attribut, mit dem der eingeschränkte Typ der generischen ObservableCollection(Of T) angegeben werden muss, nur für das Objektelement für das Stammelement unterstützt wird.

  • Sie müssen ein x:Class-Attribut deklarieren (d. h. der Buildvorgang für diese XAML-Datei muss Page oder ein anderer Buildvorgang für die XAML-Kompilierung sein).

  • ObservableCollection(Of T) befindet sich in einem Namespace und einer Assembly, die anfänglich nicht dem Standard-XML-Namespace zugeordnet sind. Sie müssen ein Präfix für den Namespace und die Assembly zuordnen und dann das Präfix für das Objektelementtag für ObservableCollection(Of T) verwenden.

Eine einfachere Möglichkeit für die Verwendung von ObservableCollection(Of T)-Funktionen aus XAML in einer Anwendung ist das Deklarieren einer eigenen nicht generischen benutzerdefinierten Auflistungsklasse, die von ObservableCollection(Of T) abgeleitet ist und diese auf einen bestimmten Typ einschränkt. Ordnen Sie dann die Assembly zu, die diese Klasse enthält, und verweisen Sie darauf als Element in XAML.

This example shows how to create and bind to a collection that derives from the ObservableCollection(Of 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:


public class NameList : ObservableCollection<PersonName>
{
    public NameList() : base()
    {
        Add(new PersonName("Willa", "Cather"));
        Add(new PersonName("Isak", "Dinesen"));
        Add(new PersonName("Victor", "Hugo"));
        Add(new PersonName("Jules", "Verne"));
    }
  }

  public class PersonName
  {
      private string firstName;
      private string lastName;

      public PersonName(string first, string last)
      {
          this.firstName = first;
          this.lastName = last;
      }

      public string FirstName
      {
          get { return firstName; }
          set { firstName = value; }
      }

      public string LastName
      {
          get { return lastName; }
          set { lastName = value; }
      }
  }


You can make the collection available for binding the same way you would with other common language runtime (CLR) objects, as described in Gewusst wie: Bereitstellen von Daten, um diese in XAML zu binden. 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.

Hinweis Hinweis

The objects in your collection must satisfy the requirements described in the Übersicht über Bindungsquellen. 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 Übersicht über Datenbindung.

.NET Framework

Unterstützt in: 4, 3.5, 3.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Fanden Sie dies hilfreich?
(2000 verbleibende Zeichen)
Community-Inhalt Hinzufügen
Anmerkungen FAQ