Condividi tramite


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:

Creare il progetto

Creare un nuovo progetto WPF per visualizzare i record di prodotto.

  1. Aprire Visual Studio.

  2. Nella finestra iniziale scegliere Crea un nuovo progetto.

  3. 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.

  1. Scegliere Mostra origini dati dal menu Dati.

    Verrà visualizzata la finestra Origini dati.

  2. Nella finestra Origini dati fare clic su Aggiungi nuova origine dati.

    Verrà avviata la Configurazione guidata origine dati.

  3. Nella pagina Scegliere un tipo di origine dati selezionare Database e quindi avanti.

  4. Nella pagina Scegliere un modello di database selezionare Set di dati e quindi selezionare Avanti.

  5. 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.

  6. 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.

  7. Nella pagina Seleziona oggetti di database espandere Tables, quindi selezionare la tabella Product (SalesLT).

  8. Fare clic su Fine.

    Visual Studio aggiunge un nuovo AdventureWorksLTDataSet.xsd file al progetto e aggiunge un elemento AdventureWorksLTDataSet corrispondente alla finestra Origini dati. Il AdventureWorksLTDataSet.xsd file definisce un set di dati tipizzato denominato AdventureWorksLTDataSet e un TableAdapter denominato ProductTableAdapter. Più avanti in questa procedura dettagliata, l'oggetto ProductTableAdapter verrà usato per riempire il set di dati con i dati e salvare nuovamente le modifiche nel database.

  9. 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.

  1. In Esplora soluzioni fare doppio clic sul file AdventureWorksLTDataSet.xsd.

    Viene aperto Progettazione DataSet.

  2. 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.

  3. Nella pagina Immettere un'istruzione SQL aggiungere la clausola seguente WHERE dopo l'istruzione SELECT nella casella di testo.

    WHERE ThumbnailPhotoFileName <> 'no_image_available_small.gif'
    
  4. 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.

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

    La finestra verrà aperta in WPF Designer.

  2. 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">&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.

Creare controlli associati a dati

Creare controlli che visualizzano i record dei clienti trascinando la Product tabella dalla finestra Origini dati a WPF Designer.

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

  2. Espandere il nodo Product.

  3. 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

  4. 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.

  5. 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.

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

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

Aggiungere il codice che consente agli utenti di scorrere i record di prodotto 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 gestore eventi backButton_Click per l'evento Click.

  2. Modificare il gestore eventi Window_Loaded in modo che ProductViewSource, AdventureWorksLTDataSet e AdventureWorksLTDataSetProductTableAdapter siano esterni al metodo e accessibili all'intero form. Dichiarare solo questi elementi come globali nel form e assegnarli all'interno del Window_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();
    }
    
  3. Aggiungere il codice seguente al gestore eventi backButton_Click :

    if (productViewSource.View.CurrentPosition > 0)
    {
        productViewSource.View.MoveCurrentToPrevious();
    }
    
  4. Tornare alla finestra di progettazione e fare doppio clic sul pulsante >.

  5. Aggiungere il codice seguente al gestore eventi nextButton_Click :

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

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.

  1. 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.

  2. Aggiungere il codice seguente al gestore eventi saveButton_Click :

    adventureWorksLTDataSetProductTableAdapter.Update(AdventureWorksLTDataSet.Product);
    

    Nota

    Questo esempio usa il metodo Save di TableAdapter 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 metodo UpdateAll di TableAdapterManager 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.

  1. 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.

  2. In uno dei record del prodotto modificare il valore Dimensioni e quindi selezionare Salva modifiche.

  3. Chiudere l'applicazione, quindi riavviarla premendo F5 in Visual Studio.

  4. Passare al record di prodotto modificato e verificare che la modifica sia presente.

  5. Chiudere l'applicazione.

Passaggi successivi

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