Associare controlli WPF ai 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. 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.

È possibile visualizzare i dati agli utenti dell'applicazione associando i dati ai controlli WPF. Per creare questi controlli associati a dati, è possibile trascinare elementi dalla finestra Origini dati in Progettazione WPF in Visual Studio. In questo argomento vengono descritte alcune delle attività, degli strumenti e delle classi più comuni che è possibile usare per creare applicazioni WPF associate a dati.

Per informazioni generali su come creare controlli associati a dati in Visual Studio, vedere Associare controlli ai dati in Visual Studio. Per altre informazioni sul data binding WPF, vedere Panoramica del data binding.

Attività coinvolte nell'associazione di controlli WPF a dati

Nella tabella seguente sono elencate le attività che è possibile eseguire trascinando gli elementi dalla finestra Origini dati a WPF Designer.

Attività Altre informazioni
Creare nuovi controlli associati a dati.

Associare controlli esistenti a dati.
Associare controlli WPF a un set di dati
Creare controlli che visualizzano i dati correlati in una relazione padre-figlio: quando l'utente seleziona un record di dati padre in un controllo, un altro controllo visualizza i dati figlio correlati per il record selezionato. Visualizzare dati correlati in applicazioni WPF
Creare una tabella di ricerca che consente di visualizzare le informazioni contenute in una tabella in base al valore di un campo della chiave esterna in un'altra tabella. Creare tabelle di ricerca in applicazioni WPF
Associare un controllo a un'immagine di un database. Associare controlli alle immagini di un database

Obiettivi di rilascio validi

È possibile trascinare gli elementi nella finestra Origini dati solo in destinazioni di rilascio valide in WPF Designer. Esistono due tipi principali di destinazioni di rilascio valide: contenitori e controlli. Un contenitore è un elemento dell'interfaccia utente che in genere contiene i controlli. Una griglia e una finestra, ad esempio, sono contenitori.

Codice e XAML generati

Quando si trascina un elemento dalla finestra Origini dati a WPF Designer, Visual Studio genera XAML che definisce un nuovo controllo associato a dati o associa un controllo esistente all'origine dati. Per alcune origini dati, Visual Studio genera anche codice nel file code-behind che riempie l'origine dati con i dati.

La tabella seguente elenca il codice e XAML generato da Visual Studio per ogni tipo di origine dati nella finestra Origini dati.

Origine dati Generazione di XAML per l'associazione di un controllo all'origine dati Generazione di codice per l'inserimento dei dati nell'origine dati
Set di dati
Entity Data Model
Assistenza No
Object No

Set di dati

Quando si trascina una tabella o una colonna dalla finestra Origini dati alla finestra di progettazione, Visual Studio genera XAML che esegue le operazioni seguenti:

  • Aggiunge il dataset e un nuovo oggetto CollectionViewSource alle risorse del contenitore in cui è stato trascinato l'elemento. CollectionViewSource è un oggetto che può essere utilizzato per esplorare e visualizzare i dati nel dataset.

  • Crea un data binding per un controllo. Se si trascina l'elemento in un controllo esistente della finestra di progettazione, XAML associa il controllo all'elemento. Se si trascina l'elemento in un contenitore, il codice XAML crea il controllo selezionato per l'elemento trascinato e associa il controllo all'elemento. Il controllo viene creato all'interno di un nuovo oggetto Grid.

Visual Studio apporta inoltre le modifiche seguenti al file code-behind:

  • Crea un Loaded gestore eventi per l'elemento dell'interfaccia utente che contiene il controllo . Il gestore dell'evento inserisce i dati nella tabella, recupera l'oggetto CollectionViewSource dalle risorse del contenitore, quindi imposta come elemento corrente il primo elemento di dati. Se esiste già un Loaded gestore eventi, Visual Studio aggiunge questo codice al gestore eventi esistente.

Entity Data Model

Quando si trascina un'entità o una proprietà di entità dalla finestra Origini dati alla finestra di progettazione, Visual Studio genera XAML che esegue le operazioni seguenti:

  • Aggiunge un nuovo oggetto CollectionViewSource alle risorse del contenitore in cui è stato trascinato l'elemento. CollectionViewSource è un oggetto che può essere utilizzato per esplorare e visualizzare i dati nell'entità.

  • Crea un data binding per un controllo. Se si trascina l'elemento in un controllo esistente della finestra di progettazione, XAML associa il controllo all'elemento. Se si trascina l'elemento in un contenitore, il codice XAML crea il controllo selezionato per l'elemento trascinato e associa il controllo all'elemento. Il controllo viene creato all'interno di un nuovo oggetto Grid.

Visual Studio apporta inoltre le modifiche seguenti al file code-behind:

  • Aggiunge un nuovo metodo che restituisce una query per l'entità trascinata nella finestra di progettazione (o per l'entità contenente la proprietà trascinata nella finestra di progettazione). Il nuovo metodo ha il nome Get<EntityName>Query, dove \<EntityName> è il nome dell'entità.

  • Crea un Loaded gestore eventi per l'elemento dell'interfaccia utente che contiene il controllo . Il gestore eventi chiama il Get<EntityName>Query metodo per riempire l'entità con i dati, recupera l'oggetto CollectionViewSource dalle risorse del contenitore e quindi rende il primo elemento di dati l'elemento corrente. Se esiste già un Loaded gestore eventi, Visual Studio aggiunge questo codice al gestore eventi esistente.

Servizi

Quando si trascina un oggetto servizio o una proprietà dalla finestra Origini dati alla finestra di progettazione, Visual Studio genera XAML che crea un controllo associato a dati (o associa un controllo esistente all'oggetto o alla proprietà). Visual Studio, tuttavia, non genera codice che riempie l'oggetto servizio proxy con dati. È necessario scrivere questo codice manualmente. Per un esempio che illustra come eseguire questa operazione, vedere Associare controlli WPF a un servizio dati WCF.

Visual Studio genera XAML che esegue le operazioni seguenti:

  • Aggiunge un nuovo oggetto CollectionViewSource alle risorse del contenitore in cui è stato trascinato l'elemento. CollectionViewSource è un oggetto che può essere utilizzato per esplorare e visualizzare i dati nell'oggetto restituito dal servizio.

  • Crea un data binding per un controllo. Se si trascina l'elemento in un controllo esistente della finestra di progettazione, XAML associa il controllo all'elemento. Se si trascina l'elemento in un contenitore, il codice XAML crea il controllo selezionato per l'elemento trascinato e associa il controllo all'elemento. Il controllo viene creato all'interno di un nuovo oggetto Grid.

Oggetti

Quando si trascina un oggetto o una proprietà dalla finestra Origini dati alla finestra di progettazione, Visual Studio genera XAML che crea un controllo associato a dati (o associa un controllo esistente all'oggetto o alla proprietà). Visual Studio, tuttavia, non genera codice per riempire l'oggetto con i dati. È necessario scrivere questo codice manualmente.

Nota

Le classi personalizzate devono essere pubbliche e, per impostazione predefinita, hanno un costruttore senza parametri. Non possono essere classi annidate con un "punto" nella sintassi. Per altre informazioni, vedere Classi XAML e personalizzate per WPF.

Visual Studio genera XAML che esegue le operazioni seguenti:

  • Aggiunge un nuovo oggetto CollectionViewSource alle risorse del contenitore in cui è stato trascinato l'elemento. CollectionViewSource è un oggetto che può essere utilizzato per esplorare e visualizzare i dati nell'oggetto.

  • Crea un data binding per un controllo. Se si trascina l'elemento in un controllo esistente della finestra di progettazione, XAML associa il controllo all'elemento. Se si trascina l'elemento in un contenitore, il codice XAML crea il controllo selezionato per l'elemento trascinato e associa il controllo all'elemento. Il controllo viene creato all'interno di un nuovo oggetto Grid.

Vedi anche