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

Hinweis

Datasets und verwandte Klassen sind ältere .NET-Technologien aus den frühen 2000er Jahren, die es Anwendungen ermöglichen, mit Daten im Arbeitsspeicher zu arbeiten, während die Anwendungen von der Datenbank getrennt sind. Sie sind besonders nützlich für Anwendungen, die es Benutzern ermöglichen, Daten zu ändern und die Änderungen wieder in der Datenbank zu speichern. Obwohl sich Datasets als sehr erfolgreiche Technologie erwiesen haben, empfehlen wir, dass neue .NET-Anwendungen Entity Framework Core verwenden. Entity Framework bietet eine natürlichere Möglichkeit, mit tabellarischen Daten als Objektmodelle zu arbeiten, und verfügt über eine einfachere Programmierschnittstelle.

Sie können Daten für Benutzer der Anwendung anzeigen, indem Sie Daten an WPF-Steuerelemente binden. Um diese datengebundenen Steuerelemente zu erstellen, können Sie Elemente aus dem Datenquellenfenster auf den WPF-Designer in Visual Studio ziehen. In diesem Thema werden einige der häufigsten 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 in der Übersicht über die Datenbindung.

Aufgaben beim Binden von WPF-Steuerelementen an Daten

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

Aufgabe Weitere Informationen
Erstellen von neuen datengebundenen Steuerelementen

Binden Sie vorhandenen Steuerelemente an Daten.
Binden von WPF-Steuerelementen an ein Dataset
Erstellen von Steuerelementen, die verknüpfte Daten in Beziehungen zwischen übergeordneten und untergeordneten Elementen anzeigen: Wenn der Benutzer einen übergeordneten Datensatz in einem Steuerelement auswählt, werden in einem anderen Steuerelement verknüpfte untergeordnete Daten für den ausgewählten Datensatz angezeigt. Anzeigen zugehöriger Daten in WPF-Anwendungen
Erstellen einer Nachschlagetabelle, in der Informationen aus einer Tabelle auf der Grundlage des Werts 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 Ablageziele im WPF Designer ziehen. Es gibt zwei Hauptarten von gültigen Ablagezielen: Container und Steuerelemente. Ein Container ist ein Benutzeroberflächenelement, das in der Regel Steuerelemente enthält. Beispielsweise handelt es sich bei Rastern und Fenstern um Container.

Generierte XAML und generierter Code

Wenn Sie ein Element aus dem Datenquellenfenster in den WPF-Designer ziehen, generiert Visual Studio entsprechendes 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, der die Datenquelle mit Daten füllt.

In der folgenden Tabelle werden XAML und Code aufgeführt, die von Visual Studio für die einzelnen Typen von Datenquellen im Datenquellenfenster generiert werden.

Datenquellen- Generieren von XAML, das ein Steuerelement an die Datenquelle bindet Generieren von Code, der die Datenquelle mit Daten füllt
Dataset Ja Ja
Entity Data Model Ja Ja
Dienst Ja Nein
Object Ja Nein

Datasets

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

  • Den Ressourcen des Containers, in den Sie das Element gezogen haben, werden das Dataset und eine neue CollectionViewSource hinzugefügt. Die CollectionViewSource ist ein Objekt, das verwendet werden kann, um in den Daten des Datasets zu navigieren und diese anzuzeigen.

  • Es wird eine Datenbindung für ein Steuerelement erstellt. Wenn Sie das Element auf ein vorhandenes Steuerelement im Designer ziehen, bindet das XAML das Steuerelement an das Element. Wenn Sie das Element in einen Container ziehen, erstellt das XAML 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 Code-Behind-Datei vor:

  • Es wird ein Loaded-Ereignishandler für das UI-Element erstellt, das das Steuerelement enthält. Der Ereignishandler füllt die Tabelle mit Daten, ruft die CollectionViewSource aus den Ressourcen des Containers ab, und legt dann das erste Datenelement als aktuelles Element fest. Wenn bereits ein Loaded-Ereignishandler vorhanden ist, fügt Visual Studio dem vorhandenen Ereignishandler diesen Code hinzu.

Entity Data Models

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

  • Den Ressourcen des Containers, in den Sie das Element gezogen haben, wird eine neue CollectionViewSource hinzugefügt. Die CollectionViewSource ist ein Objekt, das verwendet werden kann, um in den Daten der Entität zu navigieren und diese anzuzeigen.

  • Es wird eine Datenbindung für ein Steuerelement erstellt. Wenn Sie das Element auf ein vorhandenes Steuerelement im Designer ziehen, bindet das XAML das Steuerelement an das Element. Wenn Sie das Element in einen Container ziehen, erstellt das XAML 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 Code-Behind-Datei vor:

  • Es wird eine neue Methode hinzugefügt, die eine Abfrage für die Entität zurückgibt, die Sie in den Designer gezogen haben (oder für die Entität, die die Eigenschaft enthält, die Sie in den Designer gezogen haben). Der Name der neuen Methode lautet Get<EntityName>Query, wobei \<EntityName> der Name der Entität ist.

  • Es wird ein Loaded-Ereignishandler für das UI-Element erstellt, das das Steuerelement enthält. Der Ereignishandler ruft die Get<EntityName>Query-Methode zum Auffüllen der Entität mit Daten auf, ruft die CollectionViewSource-Entität aus den Ressourcen des Containers ab und legt dann das erste Datenelement als aktuelles Element fest. Wenn bereits ein Loaded-Ereignishandler vorhanden ist, fügt Visual Studio dem vorhandenen Ereignishandler diesen Code hinzu.

Dienste

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

Visual Studio generiert XAML, das folgende Aktionen ausführt:

  • Den Ressourcen des Containers, in den Sie das Element gezogen haben, wird eine neue CollectionViewSource hinzugefügt. Die CollectionViewSource ist ein Objekt, das verwendet werden kann, um in den Daten des von dem Dienst zurückgegebenen Objekts zu navigieren und diese anzuzeigen.

  • Es wird eine Datenbindung für ein Steuerelement erstellt. Wenn Sie das Element auf ein vorhandenes Steuerelement im Designer ziehen, bindet das XAML das Steuerelement an das Element. Wenn Sie das Element in einen Container ziehen, erstellt das XAML 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.

Objects

Wenn Sie ein Objekt oder eine Eigenschaft aus dem Datenquellenfenster in den Designer ziehen, generiert Visual Studio entsprechendes XAML, das ein datengebundenes Steuerelement erstellt (oder ein vorhandenes Steuerelement an das Objekt bzw. 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 nicht als geschachtelte Klassen mit einem „Punkt“ in der Syntax definiert werden. Weitere Informationen finden Sie unter XAML und benutzerdefinierte Klassen für WPF.

Visual Studio generiert XAML, das folgende Aktionen ausführt:

  • Den Ressourcen des Containers, in den Sie das Element gezogen haben, wird eine neue CollectionViewSource hinzugefügt. Die CollectionViewSource ist ein Objekt, das verwendet werden kann, um in den Daten des Objekt zu navigieren und diese anzuzeigen.

  • Es wird eine Datenbindung für ein Steuerelement erstellt. Wenn Sie das Element auf ein vorhandenes Steuerelement im Designer ziehen, bindet das XAML das Steuerelement an das Element. Wenn Sie das Element in einen Container ziehen, erstellt das XAML 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.

Weitere Informationen