Passare dati tra le pagine di un'applicazione WPF

di Marco Leoncini, in Windows Presentation Foundation,

Con WPF è possibile realizzare una tipologia di applicazioni che in certi aspetti ricordano le applicazioni Web, dove il contenuto è organizzato in pagine navigabili.

In WPF il contenuto navigabile potrebbe essere potenzialmente qualsiasi cosa (anche una semplice pagina HTML), ma tipicamente è rappresentato dall'oggetto Page analogamente a quanto avviene per un'applicazione web, anche in WPF, spesso è necessario passare dati tra le pagine.

Creiamo due semplici pagine, una con un bottone l'altra con una Label che visualizzerà i dati che gli saranno passati. Nella prima pagina creiamo un gestore per l'evento click:

<Button Height="23" Click="NavigateTo">Pagina 2</Button>

A differenza delle applicazioni web, dove i dati sono scambiati in QueryString sotto forma di testo, con WPF è possibile passare ad una pagina qualsiasi tipo.

Per prima cosa istanziamo il nostro tipo e assegniamo a un suo campo un semplice messaggio. Infine recuperiamo il servizio di gestione della navigazione per navigare alla seconda pagina.

void NavigateTo(object sender, RoutedEventArgs e)
{
    // Istanzio l'oggetto da passare alla pagina
    CustomType _customType = new CustomType();
    // Imposto un suo campo
    _customType.OneField = "valore da passare alla seconda pagina";
    // Navigo alla seconda pagina
    NavigationService.Navigate(new SecondPage(_customType));
}

Utilizziamo l'overload nel metodo Navigate che accetta come parametro un oggetto, cosi potremo istanziare la pagina verso cui navigare, passando il nostro tipo nel costruttore.

Non rimane altro che aggiungere un custruttore alla pagina destinazione che accetti come parametro il tipo che intendiamo passare.

public SecondPage(CustomType customType): this()
{
    if (customType != null)
    {
        Label1.Content = customType.OneField;
    }
}

Nel costruttore ci assicuriamo che l'oggetto passato non sia nullo e impostiamo il contenuto della label.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi