Freigeben über


Binden von WPF-Steuerelementen an Daten in .NET Framework-Anwendungen

Hinweis

Die DataSet Klassen und verwandten Klassen sind ältere .NET Framework-Technologien aus den frühen 2000er Jahren, mit denen Anwendungen mit Daten im Arbeitsspeicher arbeiten können, während die Apps von der Datenbank getrennt sind. Die Technologien sind besonders nützlich für Apps, mit denen Benutzer Daten ändern und die Änderungen wieder in der Datenbank speichern können. Obwohl Datasets eine bewährte erfolgreiche Technologie sind, ist der empfohlene Ansatz für neue .NET-Anwendungen die Verwendung von Entity Framework Core. Entity Framework bietet eine natürlichere Möglichkeit zum Arbeiten mit tabellarischen Daten als Objektmodelle und verfügt über eine einfachere Programmierschnittstelle.

Sie können Daten für Benutzer Ihrer Anwendung anzeigen, indem Sie Daten an WPF-Steuerelemente binden. Um diese datengebundenen Steuerelemente zu erstellen, können Sie Elemente aus dem Datenquellenfenster in Visual Studio auf den WPF-Designer ziehen. In diesem Thema werden einige der am häufigsten verwendeten Aufgaben, Tools und Klassen beschrieben, mit denen Sie datengebundene WPF-Anwendungen erstellen können.

Allgemeine Informationen zum Erstellen von datengebundenen Steuerelementen in Visual Studio finden Sie unter Binden von Steuerelementen an Daten in Visual Studio. Weitere Informationen zur WPF-Datenbindung finden Sie unter Data Binding Overview.

Aufgaben beim Binden von WPF-Steuerelementen an Daten

In der folgenden Tabelle sind die Aufgaben aufgeführt, die durch Ziehen von Elementen aus dem Fenster "Datenquellen " in den WPF-Designer ausgeführt werden können.

Aufgabe Mehr Informationen
Neue datengebundene Steuerelemente erstellen.

Binden vorhandener Steuerelemente an Daten.
Binden von WPF-Steuerelementen an ein Dataset
Erstellen Sie Steuerelemente, die verwandte Daten in einer Eltern-Kind-Beziehung anzeigen: Wenn der Benutzer einen übergeordneten Datensatz in einem Steuerelement auswählt, zeigt ein anderes Steuerelement die zugehörigen untergeordneten Daten für den ausgewählten Datensatz an. Anzeigen verwandter Daten in WPF-Anwendungen
Erstellen Sie eine Nachschlagetabelle , in der Informationen aus einer Tabelle basierend auf dem Wert eines Fremdschlüsselfelds in einer anderen Tabelle angezeigt werden. Erstellen von Nachschlagetabellen in WPF-Anwendungen
Binden eines Steuerelements an ein Bild in einer Datenbank. Binden von Steuerelementen an Bilder aus einer Datenbank

Gültige Ablageziele

Sie können Elemente im Datenquellenfenster nur auf gültige Dropziele im WPF-Designer ziehen. Es gibt zwei Haupttypen gültiger Dropziele: Container und Steuerelemente. Ein Container ist ein Benutzeroberflächenelement, das in der Regel Steuerelemente enthält. Beispielsweise ist ein Raster ein Container, und ein Fenster ist auch ein Container.

Generiertes XAML und Code

Wenn Sie ein Element aus dem Datenquellenfenster in den WPF-Designer ziehen, generiert Visual Studio XAML, das ein neues datengebundenes Steuerelement definiert (oder ein vorhandenes Steuerelement an die Datenquelle bindet). Für einige Datenquellen generiert Visual Studio auch Code in der CodeBehind-Datei, die die Datenquelle mit Daten ausfüllt.

In der folgenden Tabelle sind der XAML-Code und der Code aufgeführt, den Visual Studio für jeden Datenquellentyp im Fenster " Datenquellen " generiert.

Datenquelle Generieren von XAML, das ein Steuerelement an die Datenquelle bindet Generieren von Code, der die Datenquelle mit Daten ausfüllt
Datensatz Ja Ja
Entitätsdatenmodell Ja Ja
Dienstleistung Ja Nein
Objekt Ja Nein

Datensätze

Wenn Sie eine Tabelle oder Spalte aus dem Fenster " Datenquellen " in den Designer ziehen, generiert Visual Studio XAML, das folgende Aktionen ausführt:

  • Fügt das Dataset und ein neues CollectionViewSource zu den Ressourcen des Containers hinzu, in den Sie das Element gezogen haben. Dies CollectionViewSource ist ein Objekt, das zum Navigieren und Anzeigen der Daten im Dataset verwendet werden kann.

  • Erstellt eine Datenbindung für ein Steuerelement. Wenn Sie das Element in ein vorhandenes Steuerelement im Designer ziehen, bindet der XAML-Code das Steuerelement an das Element. Wenn Sie das Element in einen Container ziehen, erstellt der XAML-Code das Steuerelement, das für das gezogene Element ausgewählt wurde, und bindet das Steuerelement an das Element. Das Steuerelement wird innerhalb eines neuen Grid erstellt.

Visual Studio nimmt außerdem die folgenden Änderungen an der CodeBehind-Datei vor:

  • Erstellt einen Loaded Ereignishandler für das UI-Element, das das Steuerelement enthält. Der Ereignishandler füllt die Tabelle mit Daten, ruft die CollectionViewSource Ressourcen des Containers ab und macht dann das erste Datenelement zum aktuellen Element. Wenn bereits ein Loaded Ereignishandler vorhanden ist, fügt Visual Studio diesen Code dem vorhandenen Ereignishandler hinzu.

Entitätsdatenmodelle

Wenn Sie eine Entität oder eine Entitätseigenschaft aus dem Datenquellenfenster in den Designer ziehen, generiert Visual Studio XAML, das folgende Aktionen ausführt:

  • Den Ressourcen des Containers, in den Sie das Element gezogen haben, wird eine neue CollectionViewSource hinzugefügt. Dies CollectionViewSource ist ein Objekt, das zum Navigieren und Anzeigen der Daten in der Entität verwendet werden kann.

  • Erstellt eine Datenbindung für ein Steuerelement. Wenn Sie das Element in ein vorhandenes Steuerelement im Designer ziehen, bindet der XAML-Code das Steuerelement an das Element. Wenn Sie das Element in einen Container ziehen, erstellt der XAML-Code das Steuerelement, das für das gezogene Element ausgewählt wurde, und bindet das Steuerelement an das Element. Das Steuerelement wird in einem neuen Grid erstellt.

Visual Studio nimmt außerdem die folgenden Änderungen an der CodeBehind-Datei vor:

  • Fügt eine neue Methode hinzu, die eine Abfrage für die Entität zurückgibt, die Sie auf den Designer gezogen haben (oder die Entität, die die Eigenschaft enthält, die Sie auf den Designer gezogen haben). Die neue Methode hat den Namen Get<EntityName>Query, wobei \<EntityName> der Name der Entität ist.

  • Erstellt einen Loaded Ereignishandler für das UI-Element, das das Steuerelement enthält. Der Ereignishandler ruft die Get<EntityName>Query Methode auf, um die Entität mit Daten zu füllen, die CollectionViewSource Ressourcen des Containers abzurufen und dann das erste Datenelement zum aktuellen Element zu machen. Wenn bereits ein Loaded Ereignishandler vorhanden ist, fügt Visual Studio diesen Code dem vorhandenen Ereignishandler hinzu.

Dienste

Wenn Sie ein Dienstobjekt oder eine Eigenschaft aus dem Datenquellenfenster in den Designer ziehen, generiert Visual Studio XAML, das ein datengebundenes Steuerelement erstellt (oder ein vorhandenes Steuerelement an das Objekt oder die Eigenschaft bindet). Visual Studio generiert jedoch keinen Code, der das Proxydienstobjekt mit Daten ausfüllt. Sie müssen diesen Code selbst schreiben. Ein Beispiel, das die Vorgehensweise veranschaulicht, finden Sie unter Binden von WPF-Steuerelementen an einen WCF-Datendienst.

Visual Studio generiert XAML, in dem Folgendes ausgeführt wird:

  • Den Ressourcen des Containers, in den Sie das Element gezogen haben, wird eine neue CollectionViewSource hinzugefügt. Dies CollectionViewSource ist ein Objekt, das zum Navigieren und Anzeigen der Daten im Objekt verwendet werden kann, das vom Dienst zurückgegeben wird.

  • Erstellt eine Datenbindung für ein Steuerelement. Wenn Sie das Element in ein vorhandenes Steuerelement im Designer ziehen, bindet der XAML-Code das Steuerelement an das Element. Wenn Sie das Element in einen Container ziehen, erstellt der XAML-Code das Steuerelement, das für das gezogene Element ausgewählt wurde, und bindet das Steuerelement an das Element. Das Steuerelement wird in einem neuen Grid erstellt.

Objekte

Wenn Sie ein Objekt oder eine Eigenschaft aus dem Datenquellenfenster in den Designer ziehen, generiert Visual Studio XAML, das ein datengebundenes Steuerelement erstellt (oder ein vorhandenes Steuerelement an das Objekt oder die Eigenschaft bindet). Visual Studio generiert jedoch keinen Code, um das Objekt mit Daten zu füllen. Sie müssen diesen Code selbst schreiben.

Hinweis

Benutzerdefinierte Klassen müssen öffentlich sein und standardmäßig über einen Konstruktor ohne Parameter verfügen. Sie können keine geschachtelten Klassen sein, die in ihrer Syntax einen "Punkt" aufweisen. Weitere Informationen finden Sie unter XAML und benutzerdefinierte Klassen für WPF.

Visual Studio generiert XAML, in dem Folgendes ausgeführt wird:

  • Fügt zu den Ressourcen des Containers, zu dem Sie das Element gezogen haben, eine neue CollectionViewSource hinzu. Dies CollectionViewSource ist ein Objekt, das zum Navigieren und Anzeigen der Daten im Objekt verwendet werden kann.

  • Erstellt eine Datenbindung für ein Steuerelement. Wenn Sie das Element in ein vorhandenes Steuerelement im Designer ziehen, bindet der XAML-Code das Steuerelement an das Element. Wenn Sie das Element in einen Container ziehen, erstellt der XAML-Code das Steuerelement, das für das gezogene Element ausgewählt wurde, und bindet das Steuerelement an das Element. Das Steuerelement wird innerhalb eines neuen Grid erstellt.

Siehe auch