Condividi tramite


Associare controlli WPF a un servizio dati WCF

In questa procedura dettagliata si creerà un'applicazione WPF che contiene controlli associati a dati. I controlli sono associati ai record dei clienti incapsulati in un servizio dati WCF. Si aggiungeranno anche pulsanti che i clienti possono usare per visualizzare e aggiornare i record.

Questa procedura dettagliata illustra le attività seguenti:

  • Creazione di un modello di dati entity generato dai dati nel database di esempio AdventureWorksLT.

  • Creazione di un servizio dati WCF che espone i dati in Entity Data Model a un'applicazione WPF.

  • Creazione di un set di controlli associati a dati trascinando gli elementi dalla finestra Origini dati alla finestra di progettazione WPF.

  • Creazione di pulsanti che consentono di spostarsi avanti e indietro tra i record dei clienti.

  • Creare un pulsante per salvare le modifiche ai dati nei controlli al servizio dati WCF e alla fonte dati sottostante.

Annotazioni

Le istruzioni in questo articolo illustrano la versione più recente dell'esperienza di sviluppo interattiva (IDE) disponibile in Visual Studio. Il computer potrebbe visualizzare nomi o posizioni diversi per alcuni elementi dell'interfaccia utente. È possibile usare una versione diversa di Visual Studio o impostazioni di ambiente diverse. Per altre informazioni, vedere Personalizzare l'IDE.

Prerequisiti

Per completare questa procedura dettagliata sono necessari i componenti seguenti:

  • Visual Studio

  • Accesso a un'istanza in esecuzione di SQL Server o SQL Server Express a cui è collegato il database di esempio AdventureWorksLT. Per scaricare il database, vedere Database di esempio AdventureWorks

La conoscenza precedente dei concetti seguenti è utile, ma non è necessaria per completare la procedura dettagliata:

Creare il progetto di servizio

  1. Per iniziare questa procedura dettagliata, creare un progetto di applicazione Web C# o Visual Basic ASP.NET . Denominare il progetto AdventureWorksService.

  2. In Esplora soluzioni fare clic con il pulsante destro del mouse su Default.aspx e scegliere Elimina. Questo file non è necessario per la procedura dettagliata.

Creare un modello di dati di entità per il servizio

Per esporre i dati a un'applicazione usando un servizio dati WCF, è necessario definire un modello di dati per il servizio. WCF Data Service supporta due tipi di modelli di dati: Entity Data Models e modelli di dati personalizzati definiti tramite oggetti CLR (Common Language Runtime) che implementano l'interfaccia IQueryable<T> . In questa procedura dettagliata viene creato un modello di dati di entità per il modello di dati.

  1. Nel menu Progetto , fare clic su Aggiungi Nuovo Elemento.

  2. Nell'elenco Modelli installati fare clic su Dati e quindi selezionare l'elemento di progetto Entity Data Model ADO.NET .

  3. Modificare il nome in AdventureWorksModel.edmxe fare clic su Aggiungi.

    Verrà visualizzata la procedura guidata Entity Data Model .

  4. Nella pagina Choose Model Contents (Scegli contenuto modello) fare clic su Generate from database (Genera dal database) e fare clic su Next (Avanti).

  5. Nella pagina Scegli connessione dati selezionare una delle opzioni seguenti:

    • Se nell'elenco a discesa è disponibile una connessione dati al database di esempio AdventureWorksLT, selezionarla.

    • Fare clic su Nuova connessione e creare una connessione al database AdventureWorksLT.

  6. Nella pagina Scegli connessione dati verificare che l'opzione Salva le impostazioni di connessione entità in App.Config sia selezionata e quindi selezionare Avanti.

  7. Nella pagina Scegli oggetti di database espandere Tabelle e quindi selezionare la tabella SalesOrderHeader .

  8. Fare clic su Fine.

Creare il servizio

Creare un servizio dati WCF per esporre i dati in Entity Data Model a un'applicazione WPF:

  1. Scegliere Aggiungi nuovo elemento dal menu Progetto.

  2. Nell'elenco Modelli installati fare clic su Web e quindi selezionare l'elemento di progetto WCF Data Service .

  3. Nella casella Nome digitare AdventureWorksService.svce fare clic su Aggiungi.

    Visual Studio aggiunge l'oggetto AdventureWorksService.svc al progetto.

Configurare il servizio

È necessario configurare il servizio per operare sul modello di dati di entità creato:

  1. Nel file di AdventureWorks.svc codice sostituire la dichiarazione di classe AdventureWorksService con il codice seguente.

    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);
        }
    }
    

    Questo codice aggiorna la classe AdventureWorksService, in modo che derivi da un DataService<T> che opera sulla classe di contesto dell'oggetto AdventureWorksLTEntities nel Modello di Dati Entità. Aggiorna anche il metodo InitializeService per consentire ai clienti del servizio un accesso completo in lettura e scrittura all'entità SalesOrderHeader.

  2. Compilare il progetto e verificare che venga compilato senza errori.

Creare l'applicazione client WPF

Per visualizzare i dati dal servizio dati WCF, creare una nuova applicazione WPF con un'origine dati basata sul servizio. Più avanti in questa procedura dettagliata si aggiungeranno controlli associati a dati all'applicazione.

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo della soluzione, scegliere Aggiungi e selezionare Nuovo progetto.

  2. Nella finestra di dialogo Nuovo progetto espandere Visual C# o Visual Basic e quindi selezionare Windows.

  3. Selezionare il modello di progetto applicazione WPF .

  4. Nella casella Nome digitare AdventureWorksSalesEditore fare clic su OK.

    Visual Studio aggiunge il AdventureWorksSalesEditor progetto alla soluzione.

  5. Scegliere Mostra origini dati dal menu Dati.

    Verrà visualizzata la finestra Origini dati .

  6. Nella finestra Origini Dati, fare clic su Aggiungi Nuova Origine Dati.

    Verrà visualizzata la configurazione guidata origine dati .

  7. Nella pagina Scegliere un tipo di origine dati della procedura guidata selezionare Servizio e quindi selezionare Avanti.

  8. Nella finestra di dialogo Aggiungi riferimento al servizio cliccare su Individua.

    Visual Studio cerca i servizi disponibili nella soluzione corrente e aggiunge AdventureWorksService.svc all'elenco dei servizi disponibili nella casella Servizi .

  9. Nella casella Spazio dei nomi digitare AdventureWorksService.

  10. Nella casella Servizi fare clic su AdventureWorksService.svc e quindi selezionare OK.

    Visual Studio scarica le informazioni sul servizio e quindi torna alla configurazione guidata origine dati .

  11. Nella pagina Aggiungi riferimento al servizio fare clic su Fine.

    Visual Studio aggiunge nodi che rappresentano i dati restituiti dal servizio alla finestra Origini dati .

Definire l'interfaccia utente

Aggiungere diversi pulsanti alla finestra modificando il codice XAML nella finestra di progettazione WPF. Più avanti in questa procedura dettagliata si aggiungerà codice che consente agli utenti di visualizzare e aggiornare i record di vendita usando questi pulsanti.

  1. In Esplora soluzioni fare doppio clic su MainWindow.xaml.

    La finestra viene aperta nella finestra di progettazione WPF.

  2. Nella visualizzazione XAML della finestra di progettazione aggiungere il codice seguente tra i <Grid> tag:

    <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>
    
  3. Costruisci il progetto.

Creare i controlli associati a dati

Creare controlli che visualizzano i record dei clienti trascinando il SalesOrderHeaders nodo dalla finestra Origini dati alla finestra di progettazione.

  1. Nella finestra Origini dati fare clic sul menu a discesa per il nodo SalesOrderHeaders e selezionare Dettagli.

  2. Espandere il nodo SalesOrderHeaders .

  3. Per questo esempio, alcuni campi non verranno visualizzati, quindi fare clic sul menu a discesa accanto ai nodi seguenti e selezionare Nessuno:

    • CreditCardApprovalCode

    • ModifiedDate

    • OnlineOrderFlag

    • RevisionNumber

    • rowguid

    Questa azione impedisce a Visual Studio di creare controlli associati a dati per questi nodi nel passaggio successivo. Per questa procedura dettagliata, si supponga che l'utente finale non debba visualizzare questi dati.

  4. Dalla finestra Origini dati trascinare il nodo SalesOrderHeaders nella riga della griglia sotto la riga contenente i pulsanti.

    Visual Studio genera codice e XAML che crea un set di controlli associati ai dati nella tabella Product . Per altre informazioni su XAML e codice generati, vedere Associare controlli WPF ai dati in Visual Studio.

  5. Nella finestra di progettazione fare clic sulla casella di testo accanto all'etichetta ID cliente .

  6. Nella finestra Proprietà selezionare la casella di controllo accanto alla proprietà IsReadOnly .

  7. Impostare la proprietà IsReadOnly per ognuna delle caselle di testo seguenti:

    • Numero ordine acquisto

    • ID ordine vendita

    • Numero Ordine di Vendita

Caricare i dati dal servizio

Usare l'oggetto proxy del servizio per caricare i dati di vendita dal servizio. Assegnare quindi i dati restituiti all'origine dati per la CollectionViewSource finestra WPF.

  1. Nel designer, per creare il Window_Loaded gestore eventi, fare doppio clic sul testo che recita: MainWindow.

  2. Sostituire il gestore eventi con il codice seguente. Assicurarsi di sostituire l'indirizzo localhost in questo codice con l'indirizzo host locale nel computer di sviluppo.

    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();
    }
    

Aggiungere codice che consente agli utenti di scorrere i record di vendita usando i < pulsanti e > .

  1. Nella finestra di progettazione fare doppio clic sul < pulsante nell'area della finestra.

    Visual Studio apre il file code-behind e crea un nuovo backButton_Click gestore eventi per l'evento Click .

  2. Aggiungere il codice seguente al gestore eventi generato backButton_Click :

    if (ordersViewSource.View.CurrentPosition > 0)
        ordersViewSource.View.MoveCurrentToPrevious();
    
  3. Tornare alla finestra di progettazione e fare doppio clic sul > pulsante.

    Visual Studio apre il file code-behind e crea un nuovo nextButton_Click gestore eventi per l'evento Click .

  4. Aggiungere il codice seguente al gestore eventi generato nextButton_Click :

    if (ordersViewSource.View.CurrentPosition < ((CollectionView)ordersViewSource.View).Count - 1)
    {
        ordersViewSource.View.MoveCurrentToNext();
    }
    

Salvare le modifiche apportate ai record di vendita

Aggiungere codice che consente agli utenti di visualizzare e salvare le modifiche apportate ai record di vendita usando il pulsante Salva modifiche :

  1. Nella finestra di progettazione fare doppio clic sul pulsante Salva modifiche .

    Visual Studio apre il file code-behind e crea un nuovo saveButton_Click gestore eventi per l'evento Click .

  2. Aggiungere il codice seguente al gestore eventi saveButton_Click.

    AdventureWorksService.SalesOrderHeader currentOrder = (AdventureWorksService.SalesOrderHeader)ordersViewSource.View.CurrentItem;
    dataServiceClient.UpdateObject(currentOrder);
    dataServiceClient.SaveChanges();
    

Testare l'applicazione

Compilare ed eseguire l'applicazione per verificare che sia possibile visualizzare e aggiornare i record dei clienti:

  1. Scegliere Compila soluzione dal menu Compila. Verificare che la soluzione venga compilata senza errori.

  2. Premere CTRL+F5.

    Visual Studio avvia il progetto AdventureWorksService , senza eseguire il debug.

  3. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto AdventureWorksSalesEditor .

  4. Nel menu di scelta rapida, sotto Debug, fai clic su Avvia nuova istanza.

    L'applicazione funziona. Verificare quanto segue:

    • Le caselle di testo visualizzano diversi campi di dati del primo record di vendita, con ID ordine di vendita 71774.

    • È possibile fare clic sui > pulsanti o < per spostarsi tra altri record di vendita.

  5. In uno dei record di vendita digitare un testo nella casella Commento e quindi selezionare Salva modifiche.

  6. Chiudere l'applicazione e quindi riavviare l'applicazione da Visual Studio.

  7. Passare al record di vendita modificato e verificare che la modifica persiste dopo la chiusura e la riapertura dell'applicazione.

  8. Chiudere l'applicazione.

Passaggi successivi

Dopo aver completato questa procedura dettagliata, è possibile eseguire le attività correlate seguenti: