I controlli di Silverlight 2.0 il controllo StackPanel

Introduzione al controllo StackPanel di Silverlight 2.0.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

 Introduzione

Il controllo StackPanel, permette di avere un pannello, in modo da utilizzare più controlli in maniera ordinata.

Tale controllo, può tornare utile in diversi situazione, nell’articolo vedremo alcune proprietà ed il suo utilizzo.

Il codice XAML

Dalla barra degli strumenti, trasciniamo nella parte di codice XAML, il controllo StackPanel. A seguire impostiamo alcune proprietà (come riportato nel codice seguente) ed aggiungiamo un controllo di tipo button.

Il tutto dev’essere come riportato nel codice seguente

<StackPanel Background="Azure" x:Name="StPPannello" Height="150"  KeyDown="StackPanel_KeyDown"
                    Width="200" >
<Button x:Name="btnAzione"   Content="Azione"  ></Button>
</StackPanel>

Vediamo in dettaglio le varie proprietà del controllo stackpanel, la proprietà background imposta il colore di sfondo del controllo, x:name imposta un nome univoco al controllo, in modo che si possa identificare. Le proprietà Height e Width, permettono di impostare le dimensioni del controllo.

Mentre l’evento KeyDown, viene scatenato nel momento in cui viene digitato un tasto della tastiera.

Tra i tag da notare il controllo di tipo button.

Stesura del codice.

In questa parte vediamo il codice per il linguaggio Visual C# e Visual Basic relativo all’evento KeyDown del controllo StackPanel.

Dopo aver generato nel file xaml il gestore dell’evento keydown, posizioniamoci sopra con il mouse e dal menu di scelta rapida (tasto del mouse) selezioniamo la voce “Passa al gestore eventi” in questo modo si passa alla visualizzazione del codice.

Qui di seguito si riporta il codice .Net per entrambi i linguaggi.

Codice VB.Net

Private Sub StackPanel_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.KeyEventArgs)
        If e.Key = Key.F1 Then
            Dim btnPulsante As New Button
            btnPulsante.Content = "Test"
            btnPulsante.Name = "test" & StPPannello.Children.Count
            AddHandler btnPulsante.Click, AddressOf btnPulsante_click
            StPPannello.Children.Add(btnPulsante)
        End If
    End Sub

Codice C#

private void StackPanel_KeyDown(object sender, KeyEventArgs e)
{
            if (e.Key == Key.F1)
            {
                Button btnPulsante = new Button();
                btnPulsante.Content = "Test";
                btnPulsante.Name = "test" + StPPannello.Children.Count;
                btnPulsante.Click += new RoutedEventHandler(btnPulsante_Click);
                StPPannello.Children.Add(btnPulsante);
            }
}



Ma vediamo nel dettaglio il codice.

La condizione "IF" verifica se il tasto digitato è F1, in tal caso crea un oggetto di tipo pulsante, imposta la proprietà name e content e gli attribuisce un gestore di evento all’evento click del pulsante.

Tramite il metodo add della proprietà children, viene aggiunto al controllo stackpanel l’oggetto pulsante.

Il gestore dell’evento click del pulsante

Di seguito si riporta il codice per la gestione dell’evento click del pulsante creato in precedenza a run time.

Il codice .net, crea un oggetto di tipo pulsante, impostandolo con l’oggetto sender, il cast che viene fatto (per vb.net tramite la parola chiave trycast, mentre per C# tramite la parola chiave AS) restituisce l’oggetto sender di tipo button, nel caso che si scatena un eccezione, verrà restituito null. Una volta ottenuto l’oggetto viene visualizzato a video il nome del controllo pulsante su cui si è fatto click.

Si riporta il codice per il linguaggio VB.Net e C#.

Codice VB.Net

Private Sub btnPulsante_click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
        Dim pulsante As Button = TryCast(sender, Button)
        If pulsante Is Nothing Then Exit Sub
        MessageBox.Show(pulsante.Name)
    End Sub

Codice C#

void btnPulsante_Click(object sender, RoutedEventArgs e)
        {
            Button pulsante = sender as Button;
            if (pulsante == null) return;
            MessageBox.Show(pulsante.Name);
        }


Conclusioni.

Le funzionalità messe a disposizione da questo controllo sono molteplici permettendo al programmatore di variare e di utilizzarlo con una vasta flessibilità. Nell’articolo è stata illustrata un basilare utilizzo di questo controllo non solo a livello di design ma anche tramite codice .Net

Tramite la parola download potete scaricare il file utilizzato in questo articolo.

Download