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.
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
Sul computer potrebbero essere visualizzati nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio presenti nelle istruzioni seguenti. L'edizione di Visual Studio di cui si dispone e le impostazioni utilizzate determinano questi elementi. Per ulteriori informazioni, vedere Gestione delle impostazioni.
Prerequisiti
Per completare la procedura dettagliata, è necessario disporre dei componenti seguenti:
Visual Studio 2010.
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 riportati di seguito:
Entity Data Model e ADO.NET Entity Framework. Per ulteriori informazioni, vedere Entity Data Model e Introducing the Entity Framework.
Utilizzo di Progettazione WPF. Per ulteriori informazioni, vedere Cenni preliminari su WPF e Silverlight Designer.
Associazione dati WPF. Per ulteriori informazioni, vedere Data Binding Overview.
Creazione del progetto
Creare un nuovo progetto WPF per visualizzare i record cliente.
Per creare il progetto
Avviare Visual Studio.
Scegliere Nuovo dal menu File, quindi Progetto.
Espandere Visual Basic o Visual C#, quindi selezionare Finestre.
Selezionare il modello di progetto Applicazione WPF.
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 modello Entity Data Model
Dal menu Dati scegliere Aggiungi nuova origine dati per aprire la Configurazione guidata origine dati.
Nella pagina Seleziona un tipo di origine dati fare clic su Database, quindi su Avanti.
Nella pagina Scegli modello database fare clic su Entity Data Model e scegliere Avanti.
Nella pagina Scegli contenuto Model fare clic su Genera da database, quindi su Avanti.
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.
oppure
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.
Nella pagina Seleziona oggetti di database espandere il nodo Tabelle, quindi selezionare la tabella Customer.
Scegliere Fine.
Il file Model1.edmx verrà aperto nella finestra di progettazione.
Compilare il progetto.
Definizione dell'interfaccia utente della finestra
Aggiungere pulsanti alla finestra modificando XAML in WPF Designer.
Per definire l'interfaccia utente della finestra
In Esplora soluzioni fare doppio clic su MainWindow.xaml.
La finestra verrà aperta in WPF Designer.
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"><</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>
Compilare il progetto.
Creazione di controlli con associazione a dati
Creare controlli che consentono di visualizzare i record cliente tramite trascinamento di oggetti dalla finestra Origini dati a WPF Designer.
Per creare controlli associati a dati
Scegliere Mostra origini dati dal menu Dati.
Nella finestra Origini dati fare clic sul menu a discesa relativo al nodo Customers, quindi selezionare Dettagli.
Espandere il nodo Clienti.
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
Dalla finestra Origini dati trascinare il nodo Customers nell'area sotto i pulsanti.
Nella finestra di progettazione fare clic sulla casella di testo accanto all'etichetta ID cliente.
Nella finestra Proprietà selezionare la casella di controllo accanto alla proprietà IsReadOnly.
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
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.
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); }
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();
Tornare alla finestra di progettazione e fare doppio clic sul pulsante >.
In Visual Studio viene aperto il file code-behind e viene creato un nuovo gestore eventi nextButton_Click per l'evento Click.
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
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.
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
Premere F5.
Modificare uno dei record cliente, quindi fare clic su Salva modifiche.
Chiudere l'applicazione, quindi avviarla nuovamente premendo F5.
Passare al record cliente modificato e verificare che la modifica persista.
Chiudere l'applicazione.
Passaggi successivi
Dopo avere completato questa procedura dettagliata, è possibile eseguire le attività correlate seguenti:
Imparare a utilizzare la finestra Origini dati in Visual Studio per associare i controlli WPF ad altri tipi di origini dati. Per ulteriori informazioni, vedere Procedura dettagliata: associazione di controlli WPF a un servizio dati WCF e Procedura dettagliata: associazione di controlli WPF a un dataset.
Imparare a utilizzare la finestra Origini dati in Visual Studio per visualizzare i dati correlati (ovvero, i dati in una relazione padre-figlio) nei controlli WPF. Per ulteriori informazioni, vedere Procedura dettagliata: visualizzazione dei dati correlati in un'applicazione WPF.
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