Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

ObservableCollection<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<T>-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsObservableCollection<T>()Initialisiert eine neue Instanz der ObservableCollection<T>-Klasse.
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsObservableCollection<T>(IEnumerable<T>)Initialisiert eine neue Instanz der ObservableCollection<T>-Klasse, die aus der angegebenen Auflistung kopierte Elemente enthält.
Öffentliche MethodeObservableCollection<T>(List<T>)Initialisiert eine neue Instanz der ObservableCollection<T>-Klasse, die aus der angegebenen Liste kopierte Elemente enthält.
Zum Seitenanfang

  NameBeschreibung
Öffentliche EigenschaftUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsCountRuft die Anzahl der Elemente ab, die tatsächlich in der Collection<T> enthalten sind. (Von Collection<T> geerbt.)
Öffentliche EigenschaftUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsItemRuft das Element am angegebenen Index ab oder legt dieses fest. (Von Collection<T> geerbt.)
Geschützte EigenschaftUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsItemsRuft den Collection<T>-Wrapper ab, der IList<T> einbindet. (Von Collection<T> geerbt.)
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsAddFügt am Ende der Collection<T> ein Objekt hinzu. (Von Collection<T> geerbt.)
Geschützte MethodeUnterstützt in .NET für Windows Store-AppsBlockReentrancyVerweigert das Ändern dieser Auflistung durch wiedereintretende Versuche.
Geschützte MethodeUnterstützt in .NET für Windows Store-AppsCheckReentrancySucht wiedereintretende Versuche, diese Auflistung zu ändern.
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsClearEntfernt alle Elemente aus der Collection<T>. (Von Collection<T> geerbt.)
Geschützte MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsClearItemsEntfernt alle Elemente aus der Auflistung. (Überschreibt Collection<T>.ClearItems().)
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsContainsBestimmt, ob sich ein Element in Collection<T> befindet. (Von Collection<T> geerbt.)
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsCopyToKopiert die gesamte Collection<T> in ein kompatibles eindimensionales Array, beginnend am angegebenen Index des Zielarrays. (Von Collection<T> geerbt.)
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsEquals(Object)Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist. (Von Object geerbt.)
Geschützte MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsFinalize Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsGetEnumeratorGibt einen Enumerator zurück, der die Collection<T> durchläuft. (Von Collection<T> geerbt.)
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsGetHashCodeFungiert als die Standardhashfunktion. (Von Object geerbt.)
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsIndexOfSucht nach dem angegebenen Objekt und gibt den nullbasierten Index des ersten Vorkommens innerhalb der gesamten Collection<T> zurück. (Von Collection<T> geerbt.)
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsInsertFügt am angegebenen Index ein Element in die Collection<T> ein. (Von Collection<T> geerbt.)
Geschützte MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsInsertItemFügt ein Element am angegebenen Index in die Auflistung ein. (Überschreibt Collection<T>.InsertItem(Int32, T).)
Geschützte MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsMemberwiseCloneErstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche MethodeUnterstützt in .NET für Windows Store-AppsMoveVerschiebt das Element am angegebenen Index an eine neue Position in der Auflistung.
Geschützte MethodeUnterstützt in .NET für Windows Store-AppsMoveItemVerschiebt das Element am angegebenen Index an eine neue Position in der Auflistung.
Geschützte MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsOnCollectionChangedLöst das CollectionChanged-Ereignis mit den angegebenen Argumenten aus.
Geschützte MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsOnPropertyChangedLöst das PropertyChanged-Ereignis mit den angegebenen Argumenten aus.
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsRemoveEntfernt das erste Vorkommen eines bestimmten Objekts aus der Collection<T>. (Von Collection<T> geerbt.)
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsRemoveAtEntfernt das Element am angegebenen Index aus der Collection<T>. (Von Collection<T> geerbt.)
Geschützte MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsRemoveItemEntfernt das Element am angegebenen Index aus der Auflistung. (Überschreibt Collection<T>.RemoveItem(Int32).)
Geschützte MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsSetItemErsetzt das Element am angegebenen Index. (Überschreibt Collection<T>.SetItem(Int32, T).)
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsToStringGibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Zum Seitenanfang

  NameBeschreibung
Öffentliches EreignisUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsCollectionChangedTritt ein, wenn ein Element hinzugefügt, entfernt, geändert oder verschoben wird oder wenn die gesamte Liste aktualisiert wird.
Geschütztes EreignisUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsPropertyChangedTritt ein, wenn sich ein Eigenschaftswert ändert.
Zum Seitenanfang

  NameBeschreibung
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsICollection.CopyToKopiert die Elemente der ICollection in ein Array, beginnend bei einem bestimmten Array-Index. (Von Collection<T> geerbt.)
Explizite SchnittstellenimplementierungPrivate EigenschaftUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsICollection<T>.IsReadOnlyRuft einen Wert ab, der angibt, ob das ICollection<T> schreibgeschützt ist. (Von Collection<T> geerbt.)
Explizite SchnittstellenimplementierungPrivate EigenschaftUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsICollection.IsSynchronizedRuft einen Wert ab, der angibt, ob der Zugriff auf die ICollection synchronisiert (threadsicher) ist. (Von Collection<T> geerbt.)
Explizite SchnittstellenimplementierungPrivate EigenschaftUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsICollection.SyncRootRuft ein Objekt ab, mit dem der Zugriff auf ICollection synchronisiert werden kann. (Von Collection<T> geerbt.)
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsIEnumerable.GetEnumeratorGibt einen Enumerator zurück, der eine Auflistung durchläuft. (Von Collection<T> geerbt.)
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsIList.AddFügt der IList ein Element hinzu. (Von Collection<T> geerbt.)
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsIList.ContainsBestimmt, ob die IList einen bestimmten Wert enthält. (Von Collection<T> geerbt.)
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsIList.IndexOfBestimmt den Index eines bestimmten Elements in der IList. (Von Collection<T> geerbt.)
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsIList.InsertFügt ein Element am angegebenen Index in die IList ein. (Von Collection<T> geerbt.)
Explizite SchnittstellenimplementierungPrivate EigenschaftUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsIList.IsFixedSizeRuft einen Wert ab, der angibt, ob IList eine feste Größe hat. (Von Collection<T> geerbt.)
Explizite SchnittstellenimplementierungPrivate EigenschaftUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsIList.IsReadOnlyRuft einen Wert ab, der angibt, ob die IList schreibgeschützt ist. (Von Collection<T> geerbt.)
Explizite SchnittstellenimplementierungPrivate EigenschaftUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsIList.ItemRuft das Element am angegebenen Index ab oder legt dieses fest. (Von Collection<T> geerbt.)
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsIList.RemoveEntfernt das erste Vorkommen eines bestimmten Objekts aus IList. (Von Collection<T> geerbt.)
Explizite SchnittstellenimplementierungPrivates EreignisUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsINotifyPropertyChanged.PropertyChangedTritt 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 Benutzeroberfläche 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<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<T> bzw. eine vorhandene Auflistungsklasse wie List<T>, Collection<T> oder BindingList<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.

HinweisHinweis

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<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<T> muss das Stammelement sein, da das x:TypeArguments-Attribut, mit dem der eingeschränkte Typ der generischen ObservableCollection<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<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<T> verwenden.

Eine einfachere Möglichkeit für die Verwendung von ObservableCollection<T>-Funktionen aus XAML in einer Anwendung ist das Deklarieren einer eigenen nicht generischen benutzerdefinierten Auflistungsklasse, die von ObservableCollection<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.

Dieses Beispiel veranschaulicht, wie Sie eine Auflistung erstellen und eine Bindung an eine Auflistung herstellen, die von der ObservableCollection<T>-Klasse abgeleitet wird, die Benachrichtigungen bereitstellt, wenn Elemente hinzugefügt oder entfernt werden.

Im folgenden Codebeispiel wird die Implementierung einer NameList-Auflistung veranschaulicht.


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; }
      }
  }


Die Auflistung wird für die Bindung auf die gleiche Weise wie bei anderen common language runtime (CLR)-Objekten zur Verfügung gestellt. Informationen dazu finden Sie unter Gewusst wie: Bereitstellen von Daten, um diese in XAML zu binden. Sie können beispielsweise die Auflistung in XAML instanziieren und sie als Ressource, wie hier dargestellt, angeben:



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


Danach können Sie eine Bindung an die Auflistung erstellen.


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


Die Definition von NameItemTemplate wird an dieser Stelle nicht angezeigt.

HinweisHinweis

Die Objekte in der Auflistung müssen die unter Übersicht über Bindungsquellen beschriebenen Anforderungen erfüllen. Insbesondere müssen Sie bei der Verwendung von OneWay oder TwoWay (wenn Sie z. B. Benutzeroberfläche dynamisch aktualisieren möchten, wenn sich die Quelleigenschaften ändern) einen geeigneten Benachrichtigungsmechanismus bei einer Eigenschaftenänderung, z. B. die INotifyPropertyChanged-Schnittstelle, implementieren.

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

.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.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?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft