Condividi tramite


Procedura dettagliata: associazione di controlli WPF a un Entity Data Model

In questa procedura dettagliata, verrà creata un'applicazione WPF contenente controlli associati a dati.I controlli vengono associati a record cliente incapsulati in un Entity Data Model.Si aggiungeranno inoltre i pulsanti che i clienti possono utilizzare per spostarsi tra record cliente e salvare le modifiche apportate ai record.

In questa procedura dettagliata vengono illustrate le attività seguenti:

  • Creazione di un'applicazione WPF e di un Entity Data Model generato dai dati nel database di esempio AdventureWorksLT.

  • Creazione di un set di controlli associati a dati tramite trascinamento di un'entità dalla finestra Origini dati a una finestra di Progettazione WPF.

  • Creazione di pulsanti per spostarsi avanti e indietro tra i record cliente.

  • Creazione di un pulsante per salvare nell'Entity Data Model e nell'origine dati sottostante le modifiche apportate nei controlli.

    [!NOTA]

    Nel computer in uso è possibile che vengano visualizzati nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per ulteriori informazioni vedere Impostazioni di Visual Studio.

Prerequisiti

Per completare la procedura dettagliata, è necessario disporre dei componenti seguenti:

  • Visual Studio

  • Istanza in esecuzione di SQL Server o SQL Server Express a cui è collegato il database di esempio AdventureWorksLT e cui è possibile accedere.Tale database può essere scaricato dal sito Web CodePlex (informazioni in lingua inglese).

Per completare la procedura dettagliata è inoltre consigliabile conoscere già i concetti seguenti:

Creazione del progetto

Creare un nuovo progetto WPF per visualizzare i record cliente.

Per creare il progetto

  1. Avviare Visual Studio.

  2. Scegliere Nuovo dal menu File, quindi fare clic su Progetto.

  3. Espandere Visual Basic o Visual C#, quindi selezionare Finestre.

  4. Selezionare il modello di progetto Applicazione WPF.

  5. Nella casella Nome digitare AdventureWorksCustomerEditor, quindi fare clic su OK.

    Visual Studio crea il progetto AdventureWorksCustomerEditor.

Creazione di un modello Entity Data Model per l'applicazione

Prima di poter creare i controlli associati a dati, è necessario definire un modello di dati per l'applicazione e aggiungerlo alla finestra Origini dati.In questa procedura dettagliata, si crea un Entity Data Model.

Per creare un Entity Data Model

  1. Dal menu Dati scegliere Aggiungi nuova origine dati per aprire la Configurazione guidata origine dati.

  2. Nella pagina Seleziona un tipo di origine dati fare clic su Database, quindi su Avanti.

  3. Nella pagina Scegli modello database fare clic su Entity Data Model e scegliere Avanti.

  4. Nella pagina Scegli contenuto Model fare clic su Genera da database, quindi su Avanti.

  5. Nella pagina Seleziona connessione dati effettuare una delle seguenti operazioni:

    • Selezionare la connessione dati al database di esempio AdventureWorksLT nell'elenco a discesa, se presente.

      In alternativa

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

    Verificare che l'opzione Salva impostazioni di connessione dell'entità in App.Config come sia selezionata, quindi scegliere Avanti.

  6. Nella pagina Seleziona oggetti di database espandere il nodo Tabelle, quindi selezionare la tabella Customer.

  7. Fare clic su Fine.

    Il file Model1.edmx verrà aperto nella finestra di progettazione.

  8. Compilare il progetto.

Definizione dell'interfaccia utente della finestra

Aggiungere pulsanti alla finestra modificando XAML in progettazione WPF.

Per definire l'interfaccia utente della finestra

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

    La finestra verrà aperta in Progettazione WPF.

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

    <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. Compilare il progetto.

Creazione di controlli con associazione a dati

Creare controlli che il consentono di visualizzare i record cliente tramite trascinamento di oggetti dalla finestra Origini dati a progettazione WPF.

Per creare controlli associati a dati

  1. Scegliere Mostra origini dati dal menu Dati.

  2. Nella finestra Origini dati fare clic sul menu a discesa relativo al nodo Customers e scegliere Dettagli.

  3. Espandere il nodo Clienti.

  4. Poiché per questo esempio alcuni campi non verranno visualizzati, fare clic sul menu a discesa accanto ai nodi seguenti e selezionare Nessuno:

    • NameStyle

    • PasswordHash

    • PasswordSalt

    • rowGuid

    • ModifiedDate

  5. Dalla finestra Origini dati trascinare il nodo Customers nell'area sotto i pulsanti.

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

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

  8. Compilare il progetto.

Esplorazione di record cliente

Aggiungere il codice che consente agli utenti di scorrere i record cliente utilizzando i pulsanti < e >.

Per consentire agli utenti di esplorare i record cliente

  1. Nella finestra di progettazione fare doppio clic sul pulsante <.

    In Visual Studio viene aperto il file code-behind e creato un nuovo gestore dell'evento backButton_Click per l'evento Click.

  2. Modificare il gestore dell'evento Window_Loaded in modo che CustomersViewSource e AdventureWorksLTEntities siano esterni al metodo e accessibili all'intero form.Dichiararli come globali per il form e assegnarli all'interno del gestore dell'evento Window_Loaded analogo al seguente:

    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. Aggiungere il codice seguente al gestore eventi backButton_Click:

    If CustomersViewSource.View.CurrentPosition > 0 Then
        CustomersViewSource.View.MoveCurrentToPrevious()
    End If
    
    if (customersViewSource.View.CurrentPosition > 0)
        customersViewSource.View.MoveCurrentToPrevious();
    
  4. Tornare alla finestra di progettazione e fare doppio clic sul pulsante >.

    In Visual Studio viene aperto il file code-behind e creato un nuovo gestore dell'evento nextButton_Click per l'evento Click.

  5. Aggiungere il codice seguente al gestore eventi nextButton _Click:

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

Verifica

Compilare ed eseguire il progetto per assicurarsi che il codice venga compilato e che sia possibile esplorare i record cliente.

Per eseguire il test dell'applicazione

  • Premere F5.

    L'applicazione viene compilata ed eseguita.Verificare quanto segue:

    • Vengono visualizzati i dati dei clienti.

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

Salvataggio delle modifiche ai record cliente

Aggiungere il codice che consente agli utenti di salvare le modifiche ai record cliente utilizzando il pulsante Salva modifiche.

Per aggiungere la possibilità di salvare le modifiche ai record cliente

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

    In Visual Studio viene aperto il file code-behind e creato un nuovo gestore eventi saveButton_Click.

  2. Aggiungere il codice seguente al gestore eventi saveButton_Click:

    AdventureWorksLTEntities.SaveChanges()
    
    adventureWorksLTEntities.SaveChanges();
    

Verifica dell'applicazione

Compilare ed eseguire l'applicazione per verificare che vengano visualizzati i record cliente e che sia possibile salvare le modifiche.

Per eseguire il test dell'applicazione

  1. Premere F5.

  2. Modificare uno dei record cliente, quindi fare clic su Salva modifiche.

  3. Chiudere l'applicazione, quindi avviarla nuovamente premendo F5.

  4. Passare al record cliente modificato e verificare che la modifica persista.

  5. Chiudere l'applicazione.

Passaggi successivi

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

Vedere anche

Attività

Procedura: associare controlli WPF ai dati in Visual Studio

Procedura dettagliata: associazione di controlli WPF a un dataset

Procedura dettagliata: associazione di controlli WPF a un servizio dati WCF

Concetti

Associazione di controlli WPF ai dati in Visual Studio

Cenni preliminari su WPF e Silverlight Designer

Cenni preliminari sull'associazione dati

Altre risorse

Introducing the Entity Framework