Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In dieser exemplarischen Vorgehensweise erstellen Sie eine WPF-Anwendung, die datengebundene Steuerelemente enthält. Die Steuerelemente sind an Kundendatensätze gebunden, die in einem WCF-Datendienst gekapselt sind. Außerdem fügen Sie Schaltflächen hinzu, mit denen Kunden Datensätze anzeigen und aktualisieren können.
In dieser exemplarischen Vorgehensweise werden die folgenden Aufgaben veranschaulicht:
Erstellen eines Entitätsdatenmodells, das aus Daten in der AdventureWorksLT-Beispieldatenbank generiert wird.
Erstellen eines WCF-Datendiensts, der die Daten im Entitätsdatenmodell für eine WPF-Anwendung verfügbar macht.
Erstellen einer Gruppe von datengebundenen Steuerelementen durch Ziehen von Elementen aus dem Datenquellenfenster in den WPF-Designer.
Erstellen von Schaltflächen, die vorwärts und rückwärts durch Kundendatensätze navigieren.
Erstellen einer Schaltfläche, die Änderungen an Daten in den Steuerelementen im WCF-Datendienst und der zugrunde liegenden Datenquelle speichert.
Hinweis
Die Anleitungen in diesem Artikel veranschaulichen die neueste Version der interaktiven Entwicklungsumgebung (IDE), die in Visual Studio verfügbar ist. Auf Ihrem Computer werden möglicherweise andere Namen oder Positionen für einige der Elemente der Benutzeroberfläche angezeigt. Möglicherweise verwenden Sie eine andere Version von Visual Studio oder andere Umgebungseinstellungen. Weitere Informationen finden Sie unter Personalisieren der IDE-.
Voraussetzungen
Sie benötigen die folgenden Komponenten, um diese Schritt-für-Schritt-Anleitung abzuschließen.
Visual Studio
Zugriff auf eine ausgeführte Instanz von SQL Server oder SQL Server Express, die der AdventureWorksLT-Beispieldatenbank zugeordnet ist. Informationen zum Herunterladen der Datenbank finden Sie in AdventureWorks-Beispieldatenbanken
Vorkenntnisse der folgenden Konzepte sind ebenfalls hilfreich, aber nicht erforderlich, um die exemplarische Vorgehensweise abzuschließen:
Datenmodelle in WCF Data Services.
Entitätsdatenmodelle und das ADO.NET Entity Framework. Weitere Informationen finden Sie unter Entity Framework (Übersicht).
WPF-Datenbindung. Weitere Informationen finden Sie in der Übersicht über die Datenbindung.
Erstellen des Dienstprojekts
Beginnen Sie diese Anleitung, indem Sie ein C#- oder Visual Basic ASP.NET-Webanwendungsprojekt erstellen. Benennen Sie das Projekt AdventureWorksService.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Default.aspx , und wählen Sie "Löschen" aus. Diese Datei ist für die Anleitung nicht erforderlich.
Erstellen eines Entitätsdatenmodells für den Dienst
Um Daten mithilfe eines WCF-Datendiensts für eine Anwendung verfügbar zu machen, müssen Sie ein Datenmodell für den Dienst definieren. Der WCF Data Service unterstützt zwei Arten von Datenmodellen: Entity Data Models und benutzerdefinierte Datenmodelle, die mithilfe von CLR-Objekten (Common Language Runtime) definiert werden, die die IQueryable<T> Schnittstelle implementieren. In dieser exemplarischen Vorgehensweise erstellen Sie ein Entitätsdatenmodell für das Datenmodell.
Klicken Sie im Menü Project auf Neues Element hinzufügen.
Klicken Sie in der Liste "Installierte Vorlagen" auf "Daten", und wählen Sie dann das projektelement ADO.NET Entitätsdatenmodell aus .
Ändern Sie den Namen in
AdventureWorksModel.edmx, und klicken Sie auf "Hinzufügen".Der Entitätsdatenmodell-Assistent wird geöffnet.
Klicken Sie auf der Seite " Modellinhalt auswählen " auf " Aus Datenbank generieren", und klicken Sie dann auf "Weiter".
Wählen Sie auf der Seite " Datenverbindung auswählen" eine der folgenden Optionen aus:
Wenn eine Datenverbindung mit der AdventureWorksLT-Beispieldatenbank in der Dropdownliste verfügbar ist, wählen Sie sie aus.
Klicken Sie auf "Neue Verbindung", und erstellen Sie eine Verbindung mit der AdventureWorksLT-Datenbank.
Achten Sie darauf, dass auf der Seite Ihre Datenverbindung auswählen die Option Entitätsverbindungseinstellungen in App.Config speichern unter aktiviert ist, und wählen Sie anschließend Weiter aus.
Erweitern Sie auf der Seite "Datenbankobjekte auswählen"Tabellen, und wählen Sie dann die Tabelle "SalesOrderHeader" aus.
Klicken Sie auf Fertig stellen.
Erstellen des Diensts
Erstellen Sie einen WCF-Datendienst, um die Daten im Entitätsdatenmodell für eine WPF-Anwendung verfügbar zu machen:
Wählen Sie im Menü "Projekt " die Option "Neues Element hinzufügen" aus.
Klicken Sie in der Liste "Installierte Vorlagen " auf "Web", und wählen Sie dann das WCF Data Service-Projektelement aus.
Geben Sie
AdventureWorksService.svcim Feld "Name" den Namen ein, und klicken Sie auf "Hinzufügen".Visual Studio fügt das
AdventureWorksService.svcdem Projekt hinzu.
Konfigurieren des Diensts
Sie müssen den Dienst so konfigurieren, dass er für das von Ihnen erstellte Entitätsdatenmodell ausgeführt wird:
Ersetzen Sie in der
AdventureWorks.svcCodedatei die AdventureWorksService-Klassendeklaration durch den folgenden Code.public class AdventureWorksService : DataService<AdventureWorksLTEntities> { // This method is called only once to initialize service-wide policies. public static void InitializeService(IDataServiceConfiguration config) { config.SetEntitySetAccessRule("SalesOrderHeaders", EntitySetRights.All); } }Dieser Code aktualisiert die AdventureWorksService-Klasse , sodass sie von einer DataService<T> abgeleitet wird, die auf der
AdventureWorksLTEntitiesObjektkontextklasse in Ihrem Entity Data Model ausgeführt wird. Außerdem wird dieInitializeServiceMethode aktualisiert, um Clients des Diensts den vollständigen Lese-/Schreibzugriff auf dieSalesOrderHeaderEntität zu ermöglichen.Erstellen Sie das Projekt, und überprüfen Sie, ob es ohne Fehler erstellt wird.
Erstellen der WPF-Clientanwendung
Um die Daten aus dem WCF-Datendienst anzuzeigen, erstellen Sie eine neue WPF-Anwendung mit einer Datenquelle, die auf dem Dienst basiert. Später in dieser exemplarischen Vorgehensweise fügen Sie der Anwendung datengebundene Steuerelemente hinzu.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektmappenknoten, klicken Sie auf "Hinzufügen", und wählen Sie "Neues Projekt" aus.
Erweitern Sie im Dialogfeld "Neues Projekt " Visual C# oder Visual Basic, und wählen Sie dann Windows aus.
Wählen Sie die Projektvorlage "WPF-Anwendung " aus.
Geben Sie
AdventureWorksSalesEditorim Feld "Name" den Namen ein, und klicken Sie auf "OK".Visual Studio fügt das
AdventureWorksSalesEditorProjekt zur Lösung hinzu.Klicken Sie im Menü "Daten " auf " Datenquellen anzeigen".
Das Fenster "Datenquellen " wird geöffnet.
Klicken Sie im Fenster Datenquellen auf Neue Datenquelle hinzufügen.
Der Assistent zum Konfigurieren von Datenquellen wird geöffnet.
Wählen Sie auf der Seite "Datenquellentyp auswählen" des Assistenten "Dienst" und dann "Weiter" aus.
Klicken Sie im Dialogfeld " Dienstverweis hinzufügen " auf "Ermitteln".
Visual Studio durchsucht die aktuelle Lösung nach verfügbaren Diensten und fügt
AdventureWorksService.svcder Liste der verfügbaren Dienste im Services-Feld hinzu.Geben Sie im Feld "Namespace " "AdventureWorksService" ein.
Klicken Sie im Feld "Dienste " auf "AdventureWorksService.svc", und wählen Sie dann "OK" aus.
Visual Studio lädt die Dienstinformationen herunter und kehrt dann zum Assistenten für die Datenquellenkonfiguration zurück.
Klicken Sie auf der Seite " Dienstverweis hinzufügen " auf "Fertig stellen".
Visual Studio fügt Knoten hinzu, die die vom Dienst zurückgegebenen Daten zum Fenster "Datenquellen " darstellen.
Definieren der Benutzeroberfläche
Fügen Sie dem Fenster mehrere Schaltflächen hinzu, indem Sie den XAML-Code im WPF-Designer ändern. Später in dieser exemplarischen Vorgehensweise fügen Sie Code hinzu, mit dem Benutzer Verkaufsdatensätze mithilfe dieser Schaltflächen anzeigen und aktualisieren können.
Doppelklicken Sie im Projektmappen-Explorer auf "MainWindow.xaml".
Das Fenster wird im WPF-Designer geöffnet.
Fügen Sie in der XAML-Ansicht des Designers den folgenden Code zwischen den
<Grid>Tags hinzu:<Grid.RowDefinitions> <RowDefinition Height="75" /> <RowDefinition Height="525" /> </Grid.RowDefinitions> <Button HorizontalAlignment="Left" Margin="22,20,0,24" Name="backButton" Width="75"><</Button> <Button HorizontalAlignment="Left" Margin="116,20,0,24" Name="nextButton" Width="75">></Button> <Button HorizontalAlignment="Right" Margin="0,21,46,24" Name="saveButton" Width="110">Save changes</Button>Projekt erstellen.
Erstellen der datengebundenen Steuerelemente
Erstellen Sie Steuerelemente, die Kundendatensätze anzeigen, indem Sie den SalesOrderHeaders Knoten aus dem Datenquellenfenster in den Designer ziehen.
Klicken Sie im Fenster "Datenquellen " auf das Dropdownlistenmenü für den Knoten "SalesOrderHeaders ", und wählen Sie "Details" aus.
Erweitern Sie den Knoten SalesOrderHeaders.
In diesem Beispiel werden einige Felder nicht angezeigt. Klicken Sie daher auf das Dropdownlistenmenü neben den folgenden Knoten, und wählen Sie "Keine" aus:
CreditCardApprovalCode
ModifiedDate
OnlineOrderFlag
RevisionNumber
rowguid
Diese Aktion verhindert, dass Visual Studio im nächsten Schritt datengebundene Steuerelemente für diese Knoten erstellt. Gehen Sie für diese exemplarische Vorgehensweise davon aus, dass der Endbenutzer diese Daten nicht sehen muss.
Ziehen Sie im Fenster "Datenquellen " den Knoten "SalesOrderHeaders " in die Rasterzeile unter der Zeile, die die Schaltflächen enthält.
Visual Studio generiert XAML und Code, der eine Gruppe von Steuerelementen erstellt, die an Daten in der Produkttabelle gebunden sind. Weitere Informationen zu generiertem XAML und Code finden Sie unter Binden von WPF-Steuerelementen an Daten in Visual Studio.
Klicken Sie im Designer auf das Textfeld neben der Bezeichnung "Kunden-ID ".
Aktivieren Sie im Eigenschaftenfenster das Kontrollkästchen neben der IsReadOnly-Eigenschaft .
Legen Sie die IsReadOnly-Eigenschaft für jedes der folgenden Textfelder fest:
Bestellnummer
Verkaufsauftrags-ID
Verkaufsauftragsnummer
Laden Sie die Daten aus dem Dienst
Verwenden Sie das Dienstproxyobjekt, um Verkaufsdaten aus dem Dienst zu laden. Weisen Sie dann die zurückgegebenen Daten der Datenquelle für CollectionViewSource im WPF-Fenster zu.
Doppelklicken Sie im Designer, um den
Window_LoadedEreignishandler zu erstellen, auf den Text, der lautet: MainWindow.Ersetzen Sie den Ereignishandler durch den folgenden Code. Stellen Sie sicher, dass Sie die
localhostAdresse in diesem Code durch die lokale Hostadresse auf Ihrem Entwicklungscomputer ersetzen.private AdventureWorksService.AdventureWorksLTEntities dataServiceClient; private System.Data.Services.Client.DataServiceQuery<AdventureWorksService.SalesOrderHeader> salesQuery; private CollectionViewSource ordersViewSource; private void Window_Loaded(object sender, RoutedEventArgs e) { // TODO: Modify the port number in the following URI as required. dataServiceClient = new AdventureWorksService.AdventureWorksLTEntities( new Uri("http://localhost:45899/AdventureWorksService.svc")); salesQuery = dataServiceClient.SalesOrderHeaders; ordersViewSource = ((CollectionViewSource)(this.FindResource("salesOrderHeadersViewSource"))); ordersViewSource.Source = salesQuery.Execute(); ordersViewSource.View.MoveCurrentToFirst(); }
Navigieren in Verkaufsdatensätzen
Fügen Sie Code hinzu, mit dem Nutzer mithilfe der Schaltflächen < und > durch Verkaufsdatensätze scrollen können.
Doppelklicken Sie im Designer auf die < Schaltfläche auf der Fensteroberfläche.
Visual Studio öffnet die CodeBehind-Datei und erstellt einen neuen
backButton_ClickEreignishandler für das Click Ereignis.Fügen Sie dem generierten
backButton_ClickEreignishandler den folgenden Code hinzu:Kehren Sie zum Designer zurück, und doppelklicken Sie auf die > Schaltfläche.
Visual Studio öffnet die CodeBehind-Datei und erstellt einen neuen
nextButton_ClickEreignishandler für das Click Ereignis.Fügen Sie dem generierten
nextButton_ClickEreignishandler den folgenden Code hinzu:
Speichern von Änderungen an Verkaufsdatensätzen
Fügen Sie Code hinzu, mit dem Benutzer Änderungen an Verkaufsdatensätzen anzeigen und speichern können, indem Sie die Schaltfläche " Änderungen speichern " verwenden:
Doppelklicken Sie im Designer auf die Schaltfläche " Änderungen speichern ".
Visual Studio öffnet die CodeBehind-Datei und erstellt einen neuen
saveButton_ClickEreignishandler für das Click Ereignis.Fügen Sie dem
saveButton_ClickEreignishandler den folgenden Code hinzu.
Testen der Anwendung
Erstellen Sie die Anwendung, und führen Sie sie aus, um zu überprüfen, ob Sie Kundendatensätze anzeigen und aktualisieren können:
Klicken Sie im Menü Erstellen auf Lösung erstellen. Stellen Sie sicher, dass die Lösung ohne Fehler erstellt wird.
Drücken Sie STRG+F5.
Visual Studio startet das AdventureWorksService-Projekt , ohne es zu debuggen.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das AdventureWorksSalesEditor-Projekt .
Klicken Sie im Kontextmenü unter Debug auf Neue Instanz starten.
Die Anwendung wird ausgeführt. Überprüfen Sie Folgendes:
In den Textfeldern werden unterschiedliche Datenfelder aus dem ersten Verkaufsdatensatz angezeigt, der die Auftrags-ID 71774 aufweist.
Sie können auf die >- oder die <-Schaltflächen klicken, um durch andere Verkaufsdatensätze zu navigieren.
Geben Sie in einem der Verkaufsdatensätze Text in das Feld "Kommentar" ein, und wählen Sie dann " Änderungen speichern" aus.
Schließen Sie die Anwendung, und starten Sie die Anwendung erneut aus Visual Studio.
Navigieren Sie zu dem umsatzdatensatz, den Sie geändert haben, und überprüfen Sie, ob die Änderung nach dem Schließen und erneuten Öffnen der Anwendung erhalten bleibt.
Schließen Sie die Anwendung.
Nächste Schritte
Nach Abschluss dieser exemplarischen Vorgehensweise können Sie die folgenden verwandten Aufgaben ausführen:
Erfahren Sie, wie Sie das Datenquellenfenster in Visual Studio verwenden, um WPF-Steuerelemente an andere Arten von Datenquellen zu binden. Weitere Informationen finden Sie unter Binden von WPF-Steuerelementen an ein Dataset.
Erfahren Sie, wie Sie das Datenquellenfenster in Visual Studio verwenden, um verwandte Daten (d. h. Daten in einer Beziehung zwischen übergeordneten und untergeordneten Elementen) in WPF-Steuerelementen anzuzeigen. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Anzeigen verwandter Daten in einer WPF-Anwendung.