Procédure pas à pas : liaisons de contrôles Silverlight à un service de données WCF
Dans cette procédure pas à pas, vous allez créer une application Silverlight qui contient des contrôles liés aux données. Les contrôles sont liés aux enregistrements client accessibles via un Service de données WCF.
Cette procédure pas à pas décrit les tâches suivantes :
Création d'un Entity Data Model généré à partir de données de l'exemple de base de données AdventureWorksLT.
Création d'un Service de données WCF qui expose les données de l'Entity Data Model dans une application Silverlight.
Exécution de l'Assistant Configuration de source de données pour se connecter au service de données qui remplit la fenêtre Sources de données.
Création d'un jeu de contrôles liés aux données en faisant glisser des éléments de la fenêtre Sources de données vers le Concepteur Silverlight.
Création de boutons permettant de naviguer vers l'avant et vers l'arrière dans les enregistrements.
Notes
Il est possible que pour certains des éléments de l'interface utilisateur de Visual Studio, votre ordinateur affiche des noms ou des emplacements différents de ceux indiqués dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d'informations, consultez Customizing Development Settings in Visual Studio.
Composants requis
Pour exécuter cette procédure pas à pas, vous devez disposer des composants suivants :
Visual Studio
Accès à une instance en cours d'exécution de SQL Server ou SQL Server Express à laquelle l'exemple de base de données AdventureWorksLT est liée. Vous pouvez télécharger la base de données AdventureWorksLT à partir du site Web CodePlex.
Une connaissance préalable des concepts suivants est aussi utile, mais pas obligatoire, pour effectuer cette procédure pas à pas :
Services de données WCF. Pour plus d'informations, consultez Vue d'ensemble de WCF Data Services.
Entity Data Models et ADO.NET Entity Framework. Pour plus d'informations, consultez Vue d'ensemble d'Entity Framework.
Utilisation de Concepteur Silverlight.
Liaison de données Silverlight. Pour plus d'informations, consultez Liaison de données.
Création du projet de service
Démarrez cette procédure pas à pas en créant un projet d'application Web vide pour héberger un Service de données WCF.
Pour créer le projet de service
Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.
Développez Visual C# ou Visual Basic, puis sélectionnez Web.
Sélectionnez le modèle de projet Application Web ASP.NET vide.
Dans la zone Nom, tapez AdventureWorksWebApp, puis cliquez sur OK.
Création d'un Entity Data Model pour le service
Pour exposer des données dans une application à l'aide d'un Service de données WCF, vous devez définir un modèle de données pour le service. Dans cette procédure pas à pas, vous créez un Entity Data Model.
Pour créer un modèle EDM (Entity Data Model)
Dans le menu Projet, cliquez sur Ajouter un nouvel élément.
Sélectionnez l'élément de projet Entity Data Model ADO.NET.
Renommez-le en AdventureWorksDataModel.edmx, puis cliquez sur Ajouter.
L'Assistant Entity Data Model s'ouvre.
Dans la page Choisir le contenu du Model, cliquez sur Générer à partir de la base de données, puis sur Suivant.
Dans la page Choisir votre connexion de données, sélectionnez l'une des options suivantes :
Si une connexion de données à l'exemple de base de données AdventureWorksLT est disponible dans la liste déroulante, sélectionnez-la.
ou
Cliquez sur Nouvelle connexion et créez une connexion à la base de données AdventureWorksLT.
Assurez-vous que l'option Enregistrer les paramètres de connexion de l'entité dans Web.Config en tant que est sélectionnée, puis cliquez sur Suivant.
Dans la page Choisir vos objets de base de données, développez le nœud Tables, puis sélectionnez la table Customer.
Cliquez sur Terminer.
Création du service
Créez un Service de données WCF pour exposer les données dans l'Entity Data Model.
Pour créer le service
Dans le menu Projet, cliquez sur Ajouter un nouvel élément.
Sélectionnez l'élément de projet Service de données WCF.
Dans la zone Nom, tapez AdventureWorksDataService.svc, puis cliquez sur Ajouter.
Configuration du service
Vous devez configurer le service de façon à ce qu'il fonctionne sur l'Entity Data Model que vous avez créé.
Pour configurer le service
Dans le fichier de code AdventureWorksDataService.svc, remplacez la déclaration de classe AdventureWorksDataService par le code suivant :
Public Class AdventureWorksDataService Inherits DataService(Of AdventureWorksLTEntities) ' This method is called only once to initialize service-wide policies. Public Shared Sub InitializeService(ByVal config As DataServiceConfiguration) config.SetEntitySetAccessRule("*", EntitySetRights.All) config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2 End Sub End Class
public class AdventureWorksDataService : DataService<AdventureWorksLTEntities> { // This method is called only once to initialize service-wide policies. public static void InitializeService(DataServiceConfiguration config) { config.SetEntitySetAccessRule("*", EntitySetRights.All); config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2; } }
Générez le projet et vérifiez que la génération du projet s'exécute correctement.
Création de l'application Silverlight
Créez une application Silverlight, puis ajoutez une source de données pour accéder au service.
Pour créer l'application Silverlight
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nœud de la solution, cliquez sur Ajouter, sélectionnez Nouveau projet.
Dans la boîte de dialogue Nouveau projet, développez Visual C# ou Visual Basic, puis sélectionnez Silverlight.
Sélectionnez le modèle de projet Application Silverlight.
Dans la zone Nom, tapez AdventureWorksSilverlightApp, puis cliquez sur OK.
Dans la boîte de dialogue Nouvelle application Silverlight, cliquez sur OK.
Ajout de la source de données à l'application Silverlight
Créez une source de données basée sur les données retournées par le service.
Pour créer la source de données
Dans le menu Données, cliquez sur Afficher les sources de données.
Dans la fenêtre Sources de données, cliquez sur Ajouter une nouvelle source de données.
L'Assistant Configuration de source de données s'ouvre.
Dans la page Choisir un type de source de données de l'Assistant, sélectionnez Service, puis cliquez sur Suivant.
Dans la boîte de dialogue Ajouter une référence de service, cliquez sur Découvrir.
Visual Studio recherche la solution actuelle pour les services disponibles et ajoute AdventureWorksDataService.svc à la liste des services disponibles dans la zone Services.
Dans la zone Espace de noms, tapez AdventureWorksService.
Dans la zone Services, cliquez sur AdventureWorksService.svc, puis sur OK.
Dans la page Ajouter une référence de service, cliquez sur Terminer.
Visual Studio ajoute des nœuds qui représentent les données retournées par le service dans la fenêtre Sources de données.
Définition de l'interface utilisateur de la fenêtre
Ajoutez des boutons à la fenêtre en modifiant le code XAML dans le Concepteur Silverlight.
Pour créer la disposition de fenêtre
Dans l'Explorateur de solutions, double-cliquez sur MainPage.xaml.
La fenêtre s'ouvre dans le Concepteur Silverlight.
Dans la vue XAML du concepteur, ajoutez le code suivant entre les balises <Grid> :
<Grid.RowDefinitions> <RowDefinition Height="75" /> <RowDefinition Height="525" /> </Grid.RowDefinitions> <Button HorizontalAlignment="Left" Margin="22,20,0,24" Name="backButton" Width="75" Content="<"></Button> <Button HorizontalAlignment="Left" Margin="116,20,0,24" Name="nextButton" Width="75" Content=">"></Button>
Générez le projet.
Création des contrôles liés aux données
Créez des contrôles qui affichent les enregistrements de client en faisant glisser le nœud Customers de la fenêtre Sources de données vers le concepteur.
Pour créer les contrôles liés aux données
Dans la fenêtre Sources de données, cliquez sur le menu déroulant du nœud Clients et sélectionnez Détails.
Développez le nœud Clients.
Pour cet exemple, certains champs ne seront pas affichés. Par conséquent, cliquez sur le menu déroulant en regard des nœuds suivants et sélectionnez Aucun :
NameStyle
PasswordHash
PasswordSalt
rowguid
Cela empêche Visual Studio de créer des contrôles pour ces nœuds lorsqu'ils sont déplacés vers le concepteur. Pour cette procédure pas à pas, on suppose que l'utilisateur final ne souhaite pas afficher ces données.
À partir de la fenêtre Sources de données, faites glisser le nœud Customers vers le concepteur, sous les boutons.
Visual Studio génère du code XAML qui crée un ensemble de contrôles liés aux données client.
Charger les données à partir du service
Utilisez le service pour charger les données, puis assignez les données retournées à la source de données liée aux contrôles.
Pour charger les données à partir du service
Dans le concepteur, cliquez sur une zone vide en regard de l'un des boutons.
Dans la fenêtre Propriétés, vérifiez que l'objet UserControl est sélectionnée, puis cliquez sur l'onglet Événements.
Recherchez l'événement Loaded et double-cliquez sur celui-ci.
Dans le fichier de code qui s'ouvre (MainPage.xaml), ajoutez les instructions using (C#) ou Imports (Visual Basic) suivantes :
Imports System.Windows.Data Imports AdventureWorksSilverlightApp.AdventureWorksService
using System.Windows.Data; using AdventureWorksSilverlightApp.AdventureWorksService;
Remplacez le gestionnaire d'événements par le code suivant. Assurez-vous de remplacer l'adresse localhost dans ce code par l'adresse de l'hôte locale sur votre ordinateur de développement :
Private advWorksService As AdventureWorksLTEntities Private customersViewSource As CollectionViewSource Private Sub UserControl_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded advWorksService = New AdventureWorksLTEntities(New Uri("https://localhost:6188/AdventureWorksDataService.svc")) customersViewSource = Me.Resources("CustomersViewSource") advWorksService.Customers.BeginExecute(Sub(result As IAsyncResult) customersViewSource.Source = advWorksService.Customers.EndExecute(result) End Sub, Nothing) End Sub
private AdventureWorksLTEntities advWorksService; private System.Windows.Data.CollectionViewSource customersViewSource; private void UserControl_Loaded(object sender, RoutedEventArgs e) { advWorksService = new AdventureWorksLTEntities(new Uri("https://localhost:54961/AdventureWorksDataService.svc")); customersViewSource = this.Resources["customersViewSource"] as System.Windows.Data.CollectionViewSource; advWorksService.Customers.BeginExecute(result => customersViewSource.Source = advWorksService.Customers.EndExecute(result), null); }
Test de l'application
Générez et exécutez l'application pour vérifier que vous pouvez afficher les enregistrements de client.
Pour tester l'application
Dans le menu Générer, cliquez sur Générer la solution. Vérifiez que la solution est générée sans erreur.
Appuyez sur F5.
Vérifiez que le premier enregistrement dans la table Customers apparaît.
Fermez l'application.
Notes
Si une erreur apparaît ici, vérifiez que le code contient le port approprié pour votre serveur de développement ASP.NET.
Navigation dans les enregistrements
Ajoutez du code permettant aux utilisateurs de faire défiler les enregistrements à l'aide des boutons < et >.
Pour permettre aux utilisateurs de naviguer dans les enregistrements des ventes
Ouvrez le fichier MainPage.xaml dans le concepteur et double-cliquez sur le bouton <.
Remplacez le gestionnaire d'événements backButton_Click généré par le code suivant :
Private Sub backButton_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles backButton.Click customersViewSource.View.MoveCurrentToPrevious() If customersViewSource.View.IsCurrentBeforeFirst Then customersViewSource.View.MoveCurrentToFirst() End If End Sub
private void backButton_Click(object sender, RoutedEventArgs e) { customersViewSource.View.MoveCurrentToPrevious(); if (customersViewSource.View.IsCurrentBeforeFirst) customersViewSource.View.MoveCurrentToFirst(); }
Revenez au concepteur et double-cliquez sur le bouton >.
Visual Studio ouvre le fichier code-behind et crée un gestionnaire d'événements nextButton_Click.
Remplacez le gestionnaire d'événements nextButton_Click généré par le code suivant :
Private Sub nextButton_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles nextButton.Click customersViewSource.View.MoveCurrentToNext() If customersViewSource.View.IsCurrentAfterLast Then customersViewSource.View.MoveCurrentToLast() End If End Sub
private void nextButton_Click(object sender, RoutedEventArgs e) { customersViewSource.View.MoveCurrentToNext(); if (customersViewSource.View.IsCurrentAfterLast) customersViewSource.View.MoveCurrentToLast(); }
Test de l'application
Générez et exécutez l'application pour vérifier que vous pouvez afficher les enregistrements de client et naviguer entre ceux-ci.
Pour tester l'application
Dans le menu Générer, cliquez sur Générer la solution. Vérifiez que la solution est générée sans erreur.
Appuyez sur F5.
Vérifiez que le premier enregistrement dans la table Customers apparaît.
Cliquez sur les boutons < et > pour naviguer en avant et en arrière dans les enregistrements de client.
Fermez l'application.
Notes
Si une erreur apparaît ici, vérifiez que le code contient le port approprié pour votre serveur de développement ASP.NET.
Étapes suivantes
À l'issue de cette procédure pas à pas, vous pourrez effectuer les tâches connexes suivantes :
Apprenez comment enregistrer les modifications dans la base de données. Pour plus d'informations, consultez Liaison de données.
Apprenez comment incorporer des fonctionnalités supplémentaires dans les applications Silverlight à l'aide d'Services de données WCF. Pour plus d'informations, consultez ADO .NET Data Services (Silverlight) (page éventuellement en anglais).