Associare controlli WPF a un set di dati nelle applicazioni .NET Framework
Nota
I set di dati e le classi correlate sono tecnologie .NET Framework legacy dei primi anni '2000 che consentono alle applicazioni di lavorare con i dati in memoria mentre le applicazioni vengono disconnesse dal database. Le tecnologie sono particolarmente utili per le applicazioni che consentono agli utenti di modificare i dati e rendere persistenti le modifiche apportate al database. Anche se i set di dati hanno dimostrato di essere una tecnologia molto efficace, è consigliabile che le nuove applicazioni .NET usino Entity Framework Core. Entity Framework offre un modo più naturale per usare i dati tabulari come modelli a oggetti e ha un'interfaccia di programmazione più semplice.
In questa procedura dettagliata viene creata un'applicazione WPF che contiene controlli associati a dati. I controlli vengono associati a record di prodotto incapsulati in un set di dati. È anche possibile aggiungere pulsanti per esplorare i prodotti e salvare le modifiche apportate ai record dei prodotti.
In questa procedura dettagliata sono illustrati i task 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
I nomi o i percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio in questo articolo potrebbero essere diversi nel computer in uso. È possibile usare un'edizione diversa di Visual Studio o impostazioni di ambiente diverse. Per altre informazioni, vedere Personalizzare l'IDE.
Prerequisiti
Per completare questa procedura dettagliata, è necessario disporre dei componenti seguenti:
Per completare questa esercitazione, sono necessari i carichi di lavoro sviluppo per desktop .NET e Archiviazione dati ed elaborazione dei dati installati in Visual Studio. Per installarli, aprire Programma di installazione di Visual Studio e scegliere Modifica (o Altro>modifica) accanto alla versione di Visual Studio da modificare. Vedere Modificare Visual Studio.
Accesso a un'istanza in esecuzione di SQL Server o SQL Server Express con il database di esempio AdventureWorks Light (AdventureWorksLT) collegato. Per scaricare il database, vedere Database di esempio AdventureWorks.
Per completare la procedura dettagliata è inoltre consigliabile conoscere già i concetti seguenti:
Set di dati e oggetti TableAdapter. Per altre informazioni, vedere Strumenti del set di dati in Visual Studio e TableAdapters.
Data binding WPF. Per altre informazioni, vedere la panoramica del data binding.
Creare il progetto
Creare un nuovo progetto WPF per visualizzare i record di prodotto.
Aprire Visual Studio.
Nella finestra iniziale scegliere Crea un nuovo progetto.
Cercare il modello di progetto app WPF C# e seguire la procedura per creare il progetto, denominando il progetto AdventureWorksProductsEditor.
Visual Studio crea il progetto AdventureWorksProductsEditor.
Creare 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.
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 Scegliere un tipo di origine dati selezionare Database e quindi avanti.
Nella pagina Scegliere un modello di database selezionare Set di dati e quindi selezionare Avanti.
Nella pagina Seleziona connessione dati selezionare una delle opzioni seguenti:
Se nell'elenco a discesa è disponibile una connessione dati al database di esempio AdventureWorksLT, selezionarla e quindi selezionare Avanti.
Fare clic su Nuova connessione e creare una connessione al database AdventureWorksLT.
Nella pagina Salva la stringa di connessione nel file di configurazione dell'applicazione selezionare la casella di controllo Sì, salvare la connessione come e quindi selezionare Avanti.
Nella pagina Seleziona oggetti di database espandere Tables, quindi selezionare la tabella Product (SalesLT).
Fare clic su Fine.
Visual Studio aggiunge un nuovo
AdventureWorksLTDataSet.xsd
file al progetto e aggiunge un elemento AdventureWorksLTDataSet corrispondente alla finestra Origini dati. IlAdventureWorksLTDataSet.xsd
file definisce un set di dati tipizzato denominatoAdventureWorksLTDataSet
e un 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.
Modificare il metodo di riempimento predefinito di 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.
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 seguente
WHERE
dopo l'istruzioneSELECT
nella casella di testo.WHERE ThumbnailPhotoFileName <> 'no_image_available_small.gif'
Fare clic su Fine.
Definire l'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.
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
<Grid>
tag:<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.
Creare controlli associati a dati
Creare controlli che visualizzano i record dei clienti trascinando la Product
tabella dalla finestra Origini dati a WPF Designer.
Nella finestra Origini dati fare clic sul menu a discesa per il nodo Prodotto e selezionare Dettagli.
Espandere il nodo Product.
Per questo esempio, alcuni campi non verranno visualizzati, quindi 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 Immagine.
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 su XAML e codice generati, vedere Associare 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.
Esplorare i record dei prodotti
Aggiungere il codice che consente agli utenti di scorrere i record di prodotto usando i pulsanti < e >.
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. Dichiarare solo questi elementi come globali nel form e assegnarli all'interno delWindow_Loaded
gestore eventi in modo simile 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(); }
Aggiungere il codice seguente al gestore eventi
backButton_Click
:Tornare alla finestra di progettazione e fare doppio clic sul pulsante >.
Aggiungere il codice seguente al gestore eventi
nextButton_Click
:
Salvare le modifiche apportate ai record del prodotto
Aggiungere il codice che consente agli utenti di salvare le modifiche ai record di prodotto usando il pulsante Salva modifiche.
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
: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 TableAdapters.
Testare l'applicazione
Compilare ed eseguire l'applicazione. Verificare che sia possibile visualizzare e aggiornare i record di prodotto.
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 del prodotto modificare il valore Dimensioni e quindi selezionare 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 aver completato questa procedura dettagliata, è possibile provare 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 Associare 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: Visualizzare i dati correlati in un'app WPF.