I controlli di elenco presenti in WPF

6 pagine in totale: <<Indietro 1 2 3 [4] 5 6 Avanti >>

Selezione multipla: ListBox

Il controllo ListBox è piuttosto semplice, eredita da Selector e oltre a differenziare nel layout, permette la selezione multipla degli elementi. La proprietà SelectionMode controlla quest'aspetto e può assumere i seguenti valori:

  • Single: è concesso un solo elemento selezionato per volta;
  • Multiple: l'utente seleziona o deseleziona l'elemento cliccando su di esso;
  • Extended: l'utente può selezionare più di un elemento tenendo premuto SHIFT.

Per ottenere poi quali sono gli elementi selezionati è presente una specifica proprietà SelectedItems, in sola lettura. Ecco quindi un esempio di utilizzo della ListBox:

<ListBox
    ItemsSource="{Binding}"
    SelectionMode="Multiple"
    DisplayMemberPath="@text">
</ListBox>

Questo è il risultato:

ListBox WPF

La ListBox utilizza come ItemContainer il tipo ListBoxItem che eredita da ContentControl. Ad ogni elemento viene associato un Content specifico per ogni riga e ciò permette di effettuare Binding relativi ad ogni riga. Un altro aspetto in cui la ListBox si differisce dagli altri è nell'ItemPanel: utilizza un VirtualizingStackPanel. Quest'oggetto, rispetto ad un normale StackPanel, genera solo gli elementi che risultano visibili ed evita di creare gli ItemContainer per gli item che non vanno mostrati, mentre rimuove quelli che non sono più visibili al variare dello scrolling. Questa funzionalità è importante perché permette di ottenere migliori performance in caso di Binding di un gran numero di elementi. Si consiglia comunque di evitare il caricamento di una grande quantità di dati.

Tabulazioni con TabControl

Il controllo TabControl è particolare, perché sebbene erediti da Selector, oltre a mostrare un elenco di tab, deve mostrare il contenuto del tab corrente. Per farlo, ogni ItemContainer è di tipo TabItem che eredita da HeaderedContentControl e dispone quindi sia di un Content, ma anche di un Header. La prima viene usata per mostrare il contenuto della tab selezionata, mentre la seconda proprietà viene utiizzata come titolo delle tab. Tutto questo comporta quindi l'aggiunta della proprietà ContentTemplate per impostare il template da applicare a tutti i Content.

Un'ulteriore nuova proprietà è TabStripPlacement che permette di specificare le posizioni delle tab nei quattro lati del controllo.

L'utilizzo di un TabControl è piuttosto semplice e non si discosta da quanto visto fino ad ora:

<TabControl
    ItemsSource="{Binding}"
    DisplayMemberPath="@text"
    TabStripPlacement="Left">
  
  <TabControl.ContentTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding XPath=@value}" />
    </DataTemplate>
  </TabControl.ContentTemplate>
  
</TabControl>

Ed ecco il risultato:

TabControl WPF

Da notare che DisplayMemberPath nel template di default viene utilizzato come Header di ogni TabItem.

6 pagine in totale: <<Indietro 1 2 3 [4] 5 6 Avanti >>

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.



TUTORIALS


IN EVIDENZA
MISC