Il controllo TabControl in Windows Presentation Foundation, quello per intenderci che permette di raggruppare in schede una serie di controlli, è altamente versatile e personalizzabile ed espone interessanti caratteristiche. In questo piccolo esempio ne vediamo alcune.
Creiamo un nuovo progetto WPF vuoto e digitiamo il seguente codice XAML, all'interno dei tag <Grid></Grid>, che commenteremo di seguito:
<TabControl Margin="10,10,10,10">
<TabItem Header="Con pulsanti">
<StackPanel>
<Button Width="100" Height="50" Margin="10,10,10,10">
Ciao!
</Button>
</StackPanel>
</TabItem>
<TabItem Header="Con sfondo" Foreground="White" BorderBrush="Salmon">
<TabItem.Background>
<LinearGradientBrush>
<GradientStop Color="Blue" Offset="0" />
<GradientStop Color="Green" Offset="0.5" />
<GradientStop Color="Yellow" Offset="1" />
</LinearGradientBrush>
</TabItem.Background>
</TabItem>
<TabItem Header="VB Tips And Tricks">
<Frame Source="http://www.visual-basic.it" />
</TabItem>
</TabControl>
Un controllo TabControl contiene oggetti TabItem, ognuno dei quali rappresenta una scheda. All'interno di ciascun TabItem è possibile inserire i vari elementi di interesse. Ad esempio, il primo blocco disegna un semplice pulsante, all'interno di un contenitore StackPanel. Analizzando, poi, il codice del secondo elemento TabItem, potete osservare come sia possibile personalizzare la colorazione di una "linguetta", ad esempio utilizzando un Brush per colorarne lo sfondo, oppure colorandone il bordo tramite l'attributo BorderBrush. Potete osservare il risultato di questi due blocchi nella seguente figura:
Il codice relativo al terzo elemento TabItem è molto breve, ma racchiude una funzionalità molto importante. Infatti, tramite un oggetto Frame, è possibile visualizzare dei contenuti all'interno della scheda. I contenuti visualizzabili da un frame sono rappresentati prevalentemente da oggetti di tipo URI e possono essere pagine HTML o la grande maggioranza degli oggetti appartenenti a .NET 3.0. In questo caso, l'URI specificato contiene l'indirizzo della home page di VB T&T, ma potrebbe addirittura essere il contenuto di un file di codice XAML (semprechè tale codice sia contenuto all'interno di un oggetto Page e non Window).
La figura seguente mostra come la home page di VB T&T venga mostrata all'interno di una scheda grazie all'oggetto Frame, senza necessità di altri controlli per la navigazione Web:
Ovviamente, questo è solo un piccolissimo e banale esempio di come sia possibile implementare un controllo TabControl, ma che rende l'idea circa la versatilità dello stesso grazie all'organizzazione gerarchica di XAML e alla potenza di WPF. Assegnando un attributo Name a ciascun elemento è possibile interagire da codice, grazie ai file di code-behind.
Alessandro