Silverlight finestra popup ChildWindow VB.Net e C#

Articolo introduttivo al controllo ChildWindow per la visualizzazione di finestre modali.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

Introduzione

In questo articolo, vedremo come creare le famose popup di Asp.net anche per la tecnologia Silverlight.
Tramite la classe ChildWindow, possiamo creare delle finestre modali, che permettono di dotare le nostre applicazioni in Silverlight, di un interfaccia che possa obbligare l’utente a compilare i campi di una determinata finestra, senza che possa digitare altre parti del nostro applicativo.
Una finestra, che resta in primo piano, il tutto come riportato in figura 1





Figura 1


Dopo aver creato un nuovo progetto in Silverlight, aggiungete al progetto un pulsante, il quale avrà il compito di eseguire la nostra finestra modale.
Terminata tale operazione, nella finestra “esplora soluzioni” fate click sul progetto con il tasto destro, e selezionare dal menu di scelta rapida, “aggiungi nuovo elemento”, nella finestra che viene aperta, selezionate il modello quello relativo alla voce “finestra secondaria di Silverlight”, il tutto come mostrato in figura 2






Figura 2


Lasciamo il nome che ci viene assegnato (ma volendo il lettore può cambiarlo senza problemi),  verrà inserito nel progetto un nuovo controllo, che assomiglia in molti aspetti ad una finestra di progetti stile “windows Application”, con un titolo e due pulsanti (ok ed annulla).
Cambiamo la proprietà “title” dalla finestra delle proprietà, con il valore “Finestra di dialogo”.
 Nella finestra, aggiungiamo due controlli label e due controlli textbox, il tutto come mostrato in figura 1.
I controlli label riporteranno il valore della proprietà text “Nome” e l’altro “cognome” mentre le proprietà name sarà “lblNome” e “lblCognome”, mentre le caselle di testo, avranno la proprietà “Name” un controllo impostato con il valore “txtNome” e l’altro con il valore “txtCognome”.
Ora passiamo alla pagina, quella relativa di partenza, ossia dove si trova il pulsante.
Facciamo doppio click sul pulsante, e nella visualizzazione codice, nell’evento click, scriviamo il codice che ci permette di aprire la finestra child e di gestire l’evento closed, tramite un gestore di evento.
Qui di seguito si riporta il codice delle suddette operazioni.


VB.Net
Private Sub Btnapri_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Btnapri.Click
        Dim finestra As New ChildWindow1()
        AddHandler finestra.Closed, AddressOf Me.finestra_closed
        finestra.Show()
    End Sub
C#
private void Btnapri_Click(object sender, RoutedEventArgs e)
        {
            ChildWindow1 finestra = new ChildWindow1();
            finestra.Closed += new EventHandler(finestra_Closed);
            finestra.Show();
        }


Qui di seguito si riporta la funzione relativo al gestore di evento per rilevare i valori.

 

VB.Net
Private Sub finestra_closed(ByVal sender As Object, ByVal e As EventArgs)
        Dim finestra As ChildWindow1 = CType(sender, ChildWindow1)
        If finestra.DialogResult = True Then
            MessageBox.Show("Testo Nome: " & finestra.txtNome.Text & " Cognome: " + finestra.txtCognome.Text)
        End If
    End Sub
C#
void finestra_Closed(object sender, EventArgs e)
        {
            ChildWindow1 finestra = (ChildWindow1)sender;
            if (finestra.DialogResult == true)
            {
                MessageBox.Show("Nome: " + finestra.txtNome.Text + " Cognome: " + finestra.txtCognome.Text);
            }
        }


Conclusioni

L’articolo ha voluto fornire le basi per la creazione di finestre modali, ossia quelle finestre che bloccano la pagina chiamante, per visualizzare a video una semplice finestra, con due pulsanti per confermare e annullare.
La flessibilità di Silverlight lascia molto spazio ed autonomia al programmatore permettendo di personalizzare ed ampliare le finestre modali.