Procedura dettagliata: associazione di controlli WPF a un dataset
Data di pubblicazione: aprile 2016
In questa procedura dettagliata, verrà creata un'applicazione WPF contenente i controlli associati a dati. I controlli vengono associati a record di prodotto incapsulati in un set di dati. Si aggiungeranno inoltre i pulsanti per scorrere i prodotti e salvare le modifiche ai record di prodotto.
In questa procedura dettagliata vengono illustrate le attività seguenti:
Creazione di un'applicazione WPF e di un set di dati generato dai dati nel database di esempio AdventureWorksLT.
Creazione di un set di controlli associati a dati mediante il trascinamento di una tabella dati dalla finestra Origini dati a una finestra di WPF Designer.
Creazione di pulsanti per spostarsi avanti e indietro tra i record di prodotto.
Creazione di un pulsante che consente di salvare le modifiche apportate dagli utenti ai record di prodotto nella tabella dati e nell'origine dati sottostante.
Nota
Nomi o percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti potrebbero essere diversi nel computer in uso. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per altre informazioni, vedere Personalizzazione dell'IDE.
Prerequisiti
Per completare la procedura dettagliata, è necessario disporre dei componenti seguenti:
Visual Studio
Accesso a un'istanza in esecuzione di SQL Server o SQL Server Express con il database di esempio AdventureWorksLT associato. È possibile scaricare il database AdventureWorksLT dal sito Web CodePlex.
Per completare la procedura dettagliata è inoltre consigliabile conoscere già i concetti seguenti:
Set di dati e oggetti TableAdapter. Per altre informazioni, vedere Utilizzo di dataset in Visual Studio e Cenni preliminari sugli oggetti TableAdapter.
Uso di WPF Designer. Per altre informazioni, vedere Cenni preliminari su WPF e Silverlight Designer.
Data binding WPF. Per altre informazioni, vedere Cenni preliminari sull'associazione dati.
Creazione del progetto
Creare un nuovo progetto WPF. Il progetto visualizzerà i record di prodotto.
Per creare il progetto
Avviare Visual Studio.
Scegliere Nuovo dal menu File, quindi fare clic su Progetto.
Espandere Visual Basic o Visual C#, quindi selezionare Finestre.
Selezionare il modello di progetto Applicazione WPF.
Nella casella Nome digitare
AdventureWorksProductsEditor
e fare clic su OK.Visual Studio crea il progetto
AdventureWorksProductsEditor
.
Creazione di un set di dati 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 viene creato un set di dati da usare come modello di dati.
Per creare un set di dati
Scegliere Mostra origini dati dal menu Dati.
Verrà visualizzata la finestra Origini dati.
Nella finestra Origini dati fare clic su Aggiungi nuova origine dati.
Verrà avviata la Configurazione guidata origine dati.
Nella pagina Seleziona un tipo di origine dati selezionare Database, quindi fare clic su Avanti.
Nella pagina Scegli modello database selezionare DataSet e scegliere Avanti.
Nella pagina Seleziona connessione dati selezionare una delle opzioni seguenti:
Selezionare la connessione dati al database di esempio AdventureWorksLT nell'elenco a discesa, se presente, quindi scegliere Avanti.
-oppure-
Fare clic su Nuova connessione e creare una connessione al database AdventureWorksLT.
Nella pagina Salva la stringa di connessione nel file di configurazione applicazione selezionare la casella di controllo Sì, salva la connessione con nome, quindi fare clic su Avanti.
Nella pagina Seleziona oggetti di database espandere Tabelle, quindi selezionare la tabella Product (SalesLT).
Scegliere Fine.
Visual Studio aggiunge un nuovo file AdventureWorksLTDataSet.xsd al progetto e un elemento AdventureWorksLTDataSet corrispondente alla finestra Origini dati. Il file AdventureWorksLTDataSet.xsd definisce un set di dati tipizzato denominato
AdventureWorksLTDataSet
e un oggetto TableAdapter denominatoProductTableAdapter
. Più avanti in questa procedura dettagliata, l'oggettoProductTableAdapter
verrà usato per riempire il set di dati con i dati e salvare nuovamente le modifiche nel database.Compilare il progetto.
Modifica del metodo Fill predefinito dell'oggetto TableAdapter
Per riempire il set di dati con i dati, usare il metodo Fill
dell'oggetto ProductTableAdapter
. Per impostazione predefinita, il metodo Fill
riempie ProductDataTable
in AdventureWorksLTDataSet
con tutte le righe di dati della tabella Product. È possibile modificare questo metodo in modo da restituire solo un subset di righe. Per questa procedura dettagliata, modificare il metodo Fill
in modo da restituire solo di prodotti con foto.
Per caricare le righe di prodotti con foto
In Esplora soluzioni fare doppio clic sul file AdventureWorksLTDataSet.xsd.
Viene aperto Progettazione DataSet.
Nella finestra di progettazione fare clic con il pulsante destro del mouse sulla query Fill,GetData() e scegliere Configura.
Verrà avviata la Configurazione guidata TableAdapter.
Nella pagina Immettere un'istruzione SQL aggiungere la clausola WHERE seguente dopo l'istruzione
SELECT
nella casella di testo.WHERE ThumbnailPhotoFileName <> 'no_image_available_small.gif'
Scegliere Fine.
Definizione dell'interfaccia utente
Aggiungere alcuni pulsanti alla finestra modificando il codice XAML in WPF Designer. Più avanti in questa procedura dettagliata, verrà aggiunto il codice che consente agli utenti di scorrere e salvare le modifiche ai record di prodotti con questi pulsanti.
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="625" /> </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 associati a dati
Creare i controlli che consentono di visualizzare i record cliente trascinando la tabella Product
dalla finestra Origini dati a WPF Designer.
Per creare i controlli associati a dati
Nella finestra Origini dati fare clic sul menu a discesa del nodo Product e selezionare Dettagli.
Espandere il nodo Product.
Poiché per questo esempio alcuni campi non verranno visualizzati, fare clic sul menu a discesa accanto ai nodi seguenti e selezionare Nessuno:
ProductCategoryID
ProductModelID
ThumbnailPhotoFileName
rowguid
ModifiedDate
Fare clic sul menu a discesa accanto al nodo ThumbNailPhoto e selezionare Image.
Nota
Per impostazione predefinita, il controllo predefinito degli elementi nella finestra Origini dati che rappresentano immagini è impostato su Nessuno, dal momento che le immagini vengono archiviate come matrici di byte nei database e le matrici di byte possono contenere qualsiasi elemento, da una matrice semplice di byte al file eseguibile di un'applicazione di grandi dimensioni.
Dalla finestra Origini dati trascinare il nodo Product nella riga della griglia sotto la riga contenente i pulsanti.
Visual Studio genera il codice XAML che definisce un set di controlli associati a dati nella tabella Products. Genera inoltre il codice che carica i dati. Per altre informazioni sull'XAML e il codice generati, vedere Associazione di controlli WPF ai dati in Visual Studio.
Nella finestra di progettazione fare clic sulla casella di testo accanto all'etichetta Product ID.
Nella finestra Proprietà selezionare la casella di controllo accanto alla proprietà IsReadOnly.
Esplorazione dei record di prodotto
Aggiungere il codice che consente agli utenti di scorrere i record di prodotto usando i pulsanti < e >.
Per consentire agli utenti di esplorare i record di prodotto
Nella finestra di progettazione fare doppio clic sul pulsante < nell'area della finestra.
Visual Studio apre il file code-behind e crea un nuovo gestore eventi
backButton_Click
per l'evento Click.Modificare il gestore eventi
Window_Loaded
in modo cheProductViewSource
,AdventureWorksLTDataSet
eAdventureWorksLTDataSetProductTableAdapter
siano esterni al metodo e accessibili all'intero form. Dichiararli come globali per il form e assegnarli all'interno del gestore eventiWindow_Loaded
analogo al seguente:private AdventureWorksProductsEditor.AdventureWorksLTDataSet AdventureWorksLTDataSet; private AdventureWorksProductsEditor.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter adventureWorksLTDataSetProductTableAdapter; private System.Windows.Data.CollectionViewSource productViewSource; private void Window_Loaded(object sender, RoutedEventArgs e) { AdventureWorksLTDataSet = ((AdventureWorksProductsEditor.AdventureWorksLTDataSet)(this.FindResource("adventureWorksLTDataSet"))); // Load data into the table Product. You can modify this code as needed. adventureWorksLTDataSetProductTableAdapter = new AdventureWorksProductsEditor.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter(); adventureWorksLTDataSetProductTableAdapter.Fill(AdventureWorksLTDataSet.Product); productViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("productViewSource"))); productViewSource.View.MoveCurrentToFirst(); }
Dim ProductViewSource As System.Windows.Data.CollectionViewSource Dim AdventureWorksLTDataSet As AdventureWorksProductsEditor.AdventureWorksLTDataSet Dim AdventureWorksLTDataSetProductTableAdapter As AdventureWorksProductsEditor.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded AdventureWorksLTDataSet = CType(Me.FindResource("AdventureWorksLTDataSet"), AdventureWorksProductsEditor.AdventureWorksLTDataSet) 'Load data into the table Product. You can modify this code as needed. AdventureWorksLTDataSetProductTableAdapter = New AdventureWorksProductsEditor.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter() AdventureWorksLTDataSetProductTableAdapter.Fill(AdventureWorksLTDataSet.Product) ProductViewSource = CType(Me.FindResource("ProductViewSource"), System.Windows.Data.CollectionViewSource) ProductViewSource.View.MoveCurrentToFirst() End Sub
Aggiungere il codice seguente al gestore eventi
backButton_Click
:if (productViewSource.View.CurrentPosition > 0) { productViewSource.View.MoveCurrentToPrevious(); }
If ProductViewSource.View.CurrentPosition > 0 Then ProductViewSource.View.MoveCurrentToPrevious() End If
Tornare alla finestra di progettazione e fare doppio clic sul pulsante >.
Aggiungere il codice seguente al gestore eventi
nextButton_Click
:if (productViewSource.View.CurrentPosition < ((CollectionView)productViewSource.View).Count - 1) { productViewSource.View.MoveCurrentToNext(); }
If ProductViewSource.View.CurrentPosition < CType(ProductViewSource.View, CollectionView).Count - 1 Then ProductViewSource.View.MoveCurrentToNext() End If
Salvataggio delle modifiche ai record di prodotto
Aggiungere il codice che consente agli utenti di salvare le modifiche ai record di prodotto usando il pulsante Salva modifiche.
Per aggiungere la possibilità di salvare le modifiche ai record di prodotto
Nella finestra di progettazione fare doppio clic sul pulsante Salva modifiche.
Visual Studio apre il file code-behind e crea un nuovo gestore eventi
saveButton_Click
per l'evento Click.Aggiungere il codice seguente al gestore eventi
saveButton_Click
:adventureWorksLTDataSetProductTableAdapter.Update(AdventureWorksLTDataSet.Product);
AdventureWorksLTDataSetProductTableAdapter.Update(AdventureWorksLTDataSet.Product)
Nota
Questo esempio usa il metodo
Save
diTableAdapter
per salvare le modifiche. Tale approccio è appropriato a questa procedura dettagliata, in quanto viene modificata una sola tabella dati. Se è necessario salvare modifiche a più tabelle dati, è possibile usare in alternativa il metodoUpdateAll
diTableAdapterManager
generato da Visual Studio con il set di dati. Per altre informazioni, vedere Panoramica di TableAdapterManager.
Verifica dell'applicazione
Compilare ed eseguire l'applicazione. Verificare che sia possibile visualizzare e aggiornare i record di prodotto.
Per eseguire il test dell'applicazione
Premere F5.
L'applicazione verrà compilata ed eseguita. Verificare quanto segue:
Nelle caselle di testo vengono visualizzati i dati del primo record di prodotto contenente una foto. L'ID prodotto è 713, mentre il nome è Long-Sleeve Logo Jersey, S.
È possibile fare clic sui pulsanti > o < per spostarsi tra gli altri record di prodotto.
In uno dei record di prodotto modificare il valore Dimensione, quindi fare clic su Salva modifiche.
Chiudere l'applicazione, quindi riavviarla premendo F5 in Visual Studio.
Passare al record di prodotto modificato e verificare che la modifica sia presente.
Chiudere l'applicazione.
Passaggi successivi
Dopo avere completato questa procedura dettagliata, è possibile eseguire le attività correlate seguenti:
Imparare a usare la finestra Origini dati in Visual Studio per associare i controlli WPF ad altri tipi di origini dati. Per altre informazioni, vedere Procedura dettagliata: associazione di controlli WPF a un servizio dati WCF.
Imparare a usare la finestra Origini dati in Visual Studio per visualizzare i dati correlati, ovvero i dati in una relazione padre-figlio, nei controlli WPF. Per altre informazioni, vedere Procedura dettagliata: visualizzazione dei dati correlati in un'applicazione WPF.
Vedere anche
Associazione di controlli WPF ai dati in Visual Studio
Procedura: associare controlli WPF ai dati in Visual Studio
Utilizzo di dataset in Visual Studio
Cenni preliminari su WPF e Silverlight Designer
Cenni preliminari sull'associazione dati