Exemplarische Vorgehensweise: Binden von WPF-Steuerelementen an ein Entity Data Model

In dieser exemplarischen Vorgehensweise erstellen Sie eine WPF-Anwendung, die datengebundene Steuerelemente enthält. Die Steuerelemente werden an Kundendatensätze gebunden, die in einem Entity Data Model gekapselt sind. Sie fügen außerdem Schaltflächen hinzu, mit denen Kunden in Kundendatensätzen navigieren und Änderungen an Datensätzen speichern können.

In dieser exemplarischen Vorgehensweise werden die folgenden Aufgaben veranschaulicht:

  • Erstellen einer WPF-Anwendung und eines Entity Data Model, das aus den Daten in der Beispieldatenbank AdventureWorksLT generiert wird

  • Erstellen eines Satzes datengebundener Steuerelemente durch Ziehen einer Entität aus dem Datenquellenfenster in ein Fenster im WPF-Designer

  • Erstellen von Schaltflächen für die Vorwärts- und Rückwärtsnavigation in Kundendatensätzen

  • Erstellen einer Schaltfläche, mit der Änderungen der Steuerelemente im Entity Data Model und der zugrunde liegenden Datenquelle gespeichert werden

    Tipp

    Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in den folgenden Anweisungen aufgeführten. Die Elemente werden durch die verwendete Ausgabe von Visual Studio und die gewählten Einstellungen bestimmt. Weitere Informationen finden Sie unter Arbeiten mit Einstellungen.

Vorbereitungsmaßnahmen

Zum Durchführen dieser exemplarischen Vorgehensweise benötigen Sie die folgenden Komponenten:

  • Visual Studio 2010.

  • Zugriff auf eine ausgeführte Instanz von SQL Server or SQL Server Express, an die die AdventureWorksLT-Beispieldatenbank angefügt ist. Sie können die AdventureWorksLT-Datenbank von der CodePlex-Website herunterladen.

Vorkenntnisse in folgenden Konzepten sind außerdem hilfreich, wenn auch für die Durchführung der exemplarischen Vorgehensweise nicht erforderlich:

Erstellen des Projekts

Erstellen Sie ein neues WPF-Projekt, um die Kundendatensätze anzuzeigen.

So erstellen Sie das Projekt

  1. Starten Sie Visual Studio.

  2. Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.

  3. Erweitern Sie Visual Basic oder Visual C#, und wählen Sie dann Windows aus.

  4. Wählen Sie die Projektvorlage WPF-Anwendung aus.

  5. Geben Sie im Feld Name die Bezeichnung AdventureWorksCustomerEditor ein, und klicken Sie dann auf OK.

    Visual Studio erstellt das Projekt AdventureWorksCustomerEditor.

Erstellen eines Entity Data Model für die Anwendung

Bevor Sie datengebundene Steuerelemente erstellen können, müssen Sie ein Datenmodell für die Anwendung definieren und es dem Datenquellenfenster hinzufügen. In dieser exemplarischen Vorgehensweise erstellen Sie ein Entity Data Model.

So erstellen Sie ein Entity Data Model

  1. Klicken Sie im Menü Daten auf Neue Datenquelle hinzufügen, um den Assistenten zum Konfigurieren von Datenquellen zu öffnen.

  2. Klicken Sie auf der Seite Datenquellentyp auswählen nacheinander auf Datenbank und dann auf Weiter.

  3. Klicken Sie auf der Seite Wählen Sie ein Datenbankmodell aus auf Entity Data Model und dann auf Weiter.

  4. Klicken Sie auf der Seite Modellinhalt auswählen auf Aus Datenbank generieren und dann auf Weiter.

  5. Führen Sie auf der Seite Wählen Sie Ihre Datenverbindung aus einen der folgenden Schritte aus:

    • Wenn in der Dropdownliste eine Datenverbindung mit der AdventureWorksLT-Beispieldatenbank verfügbar ist, wählen Sie diese aus.

      – oder –

    • Klicken Sie auf Neue Verbindung, und erstellen Sie eine Verbindung mit der AdventureWorksLT-Datenbank.

    Stellen Sie sicher, dass die Option Speichern Sie die Entitätsverbindungseinstellungen in App.Config als aktiviert ist, und klicken Sie dann auf Weiter.

  6. Erweitern Sie auf der Seite Datenbankobjekte auswählen den Knoten Tabellen, und wählen Sie dann die Tabelle Customer aus.

  7. Klicken Sie auf Fertig stellen.

    Die Datei Model1.edmx wird im Designer geöffnet.

  8. Erstellen Sie das Projekt.

Definieren der Benutzeroberfläche des Fensters

Fügen Sie dem Fenster Schaltflächen hinzu, indem Sie im WPF-Designer das XAML ändern.

So definieren Sie die Benutzeroberfläche des Fensters

  1. Doppelklicken Sie im Projektmappen-Explorer auf MainWindow.xaml.

    Das Fenster wird im WPF-Designer geöffnet.

  2. Fügen Sie in der XAML-Ansicht des Designers zwischen den <Grid>-Tags folgenden Code hinzu:

    <Grid.RowDefinitions>
         <RowDefinition Height="75" />
         <RowDefinition Height="425" />
    </Grid.RowDefinitions>
    <Button HorizontalAlignment="Left" Margin="22,20,0,24" Name="backButton" Width="75">&lt;</Button>
    <Button HorizontalAlignment="Left" Margin="116,20,0,24" Name="nextButton" Width="75">&gt;</Button>
    <Button HorizontalAlignment="Right" Margin="0,21,46,24" Name="saveButton" Width="110">Save changes</Button>
    
  3. Erstellen Sie das Projekt.

Erstellen datengebundener Steuerelemente

Erstellen Sie Steuerelemente, die Kundendatensätze anzeigen, indem Sie Objekte aus dem Datenquellenfenster in den WPF-Designer ziehen.

So erstellen Sie datengebundene Steuerelemente

  1. Klicken Sie im Menü Daten auf Datenquellen anzeigen.

  2. Klicken Sie im Datenquellenfenster auf das Dropdownmenü für den Knoten Customers, und wählen Sie Details aus.

  3. Erweitern Sie den Knoten Customers.

  4. In diesem Beispiel werden einige Felder nicht angezeigt. Klicken Sie daher auf das Dropdownmenü neben den folgenden Knoten, und wählen Sie Keine aus:

    • NameStyle

    • PasswordHash

    • PasswordSalt

    • rowGuid

    • ModifiedDate

  5. Ziehen Sie den Knoten Customers aus dem Datenquellenfenster in den Bereich unter den Schaltflächen.

  6. Klicken Sie im Designer auf das Textfeld neben der Bezeichnung Customer ID.

  7. Aktivieren Sie im Fenster Eigenschaften das Kontrollkästchen neben der IsReadOnly-Eigenschaft.

  8. Erstellen Sie das Projekt.

Fügen Sie Code hinzu, der es Benutzern ermöglicht, mit den Schaltflächen < und > in Kundendatensätzen zu navigieren.

So ermöglichen Sie es Benutzern, in Kundendatensätzen zu navigieren

  1. Doppelklicken Sie im Designer auf die Schaltfläche <.

    Visual Studio öffnet die Code-Behind-Datei und erstellt einen neuen backButton_Click-Ereignishandler für das Click-Ereignis.

  2. Ändern Sie den Window_Loaded-Ereignishandler, damit sich die CustomersViewSource und die AdventureWorksLTEntities außerhalb der Methode befinden und das gesamte Formular auf sie zugreifen kann. Deklarieren Sie nur diese als für das Formular global, und weisen Sie sie im Window_Loaded-Ereignishandler wie folgt zu:

    Dim CustomersViewSource As System.Windows.Data.CollectionViewSource
    Dim AdventureWorksLTEntities As AdventureWorksCustomerEditor.AdventureWorksLTEntities
    
    
    Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
        CustomersViewSource = CType(Me.FindResource("CustomersViewSource"), System.Windows.Data.CollectionViewSource)
        AdventureWorksLTEntities = New AdventureWorksCustomerEditor.AdventureWorksLTEntities()
        'Load data into Customers. You can modify this code as needed.
        Dim CustomersQuery As System.Data.Objects.ObjectQuery(Of AdventureWorksCustomerEditor.Customer) = Me.GetCustomersQuery(AdventureWorksLTEntities)
        CustomersViewSource.Source = CustomersQuery.Execute(System.Data.Objects.MergeOption.AppendOnly)
    End Sub
    
    private System.Windows.Data.CollectionViewSource customersViewSource;
    private AdventureWorksCustomerEditor.AdventureWorksLTEntities adventureWorksLTEntities;
    
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        adventureWorksLTEntities = new AdventureWorksCustomerEditor.AdventureWorksLTEntities();
        // Load data into Customers. You can modify this code as needed.
        customersViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("customersViewSource")));
        System.Data.Objects.ObjectQuery<AdventureWorksCustomerEditor.Customer> customersQuery = this.GetCustomersQuery(adventureWorksLTEntities);
        customersViewSource.Source = customersQuery.Execute(System.Data.Objects.MergeOption.AppendOnly);
    }
    
  3. Fügen Sie dem backButton_Click-Ereignishandler folgenden Code hinzu:

    If CustomersViewSource.View.CurrentPosition > 0 Then
        CustomersViewSource.View.MoveCurrentToPrevious()
    End If
    
    if (customersViewSource.View.CurrentPosition > 0)
        customersViewSource.View.MoveCurrentToPrevious();
    
  4. Kehren Sie zum Designer zurück, und doppelklicken Sie auf die Schaltfläche >.

    Visual Studio öffnet die Code-Behind-Datei und erstellt einen neuen nextButton_Click-Ereignishandler für das Click-Ereignis.

  5. Fügen Sie dem nextButton _Click-Ereignishandler folgenden Code hinzu:

    If CustomersViewSource.View.CurrentPosition < CType(CustomersViewSource.View, CollectionView).Count - 1 Then
        CustomersViewSource.View.MoveCurrentToNext()
    End If
    
    if (customersViewSource.View.CurrentPosition < ((CollectionView)customersViewSource.View).Count - 1)
        customersViewSource.View.MoveCurrentToNext();
    

Checkpoint

Erstellen Sie das Projekt, und führen Sie es aus, um sicherzustellen, dass der Code kompiliert wird und dass Sie in Kundendatensätzen navigieren können.

So testen Sie die Anwendung

  • Drücken Sie F5.

    Die Anwendung wird erstellt und ausgeführt. Überprüfen Sie Folgendes:

    • Kundendaten werden angezeigt.

    • Sie können auf die Schaltfläche > oder < klicken, um in Kundendatensätzen zu navigieren.

Speichern von Änderungen an Kundendatensätzen

Fügen Sie Code hinzu, der es Benutzern ermöglicht, Änderungen an Kundendatensätzen mit der Schaltfläche Änderungen speichern zu speichern.

So fügen Sie die Fähigkeit hinzu, Änderungen an Kundendatensätzen zu speichern

  1. Doppelklicken Sie im Designer auf die Schaltfläche Änderungen speichern.

    Visual Studio öffnet die Code-Behind-Datei und erstellt einen neuen saveButton_Click-Ereignishandler.

  2. Fügen Sie dem saveButton_Click-Ereignishandler folgenden Code hinzu:

    AdventureWorksLTEntities.SaveChanges()
    
    adventureWorksLTEntities.SaveChanges();
    

Testen der Anwendung

Erstellen Sie die Anwendung, und führen Sie sie aus, um zu überprüfen, ob die Kundendatensätze angezeigt werden und Sie Änderungen an ihnen speichern können.

So testen Sie die Anwendung

  1. Drücken Sie F5.

  2. Bearbeiten Sie einen der Kundendatensätze, und klicken Sie dann auf Änderungen speichern.

  3. Schließen Sie die Anwendung, und starten Sie dann die Anwendung neu, indem Sie F5 drücken.

  4. Navigieren Sie zu dem Kundendatensatz, den Sie geändert haben, und überprüfen Sie, ob die Änderung beibehalten wurde.

  5. Schließen Sie die Anwendung.

Nächste Schritte

Nach Abschluss der exemplarischen Vorgehensweise sind Sie in der Lage, die folgenden zugehörigen Aufgaben auszuführen:

Siehe auch

Aufgaben

Gewusst wie: Binden von WPF-Steuerelementen an Daten in Visual Studio

Exemplarische Vorgehensweise: Binden von WPF-Steuerelementen an ein Dataset

Exemplarische Vorgehensweise: Binden von WPF-Steuerelementen an einen WCF-Datendienst

Konzepte

Binden von WPF-Steuerelementen an Daten in Visual Studio

Übersicht über den WPF- und Silverlight-Designer

Übersicht über Datenbindung

Weitere Ressourcen

Entity Data Model

Introducing the Entity Framework