I controlli di elenco presenti in WPF

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

Strutture gerarchiche con TreeView

Anche il controllo TreeView è particolare, perché sebbene presenti anch?esso caratteristiche di selezione, non eredita da Selector, ma da ItemsControl. Questo perché, come il nome suggerisce, la TreeView mostra dati gerarchici e strutturati ad albero, mentre le CollectionView sanno lavorare solo su liste piatte. La proprietà IsSynchronizedWithCurrentItem infatti, non è disponibile e non è possibile quindi tenere sincronizzati il controllo e la CollectionView. Sono presenti comunque le proprietà SelectedItem, SelectedValue e SelectedValuePath per conoscere lo stato della selezione e al suo interno il controllo TreeView utilizza comunque la CollectionView per generare gli elementi. Il suo impiego è quindi uguale agli altri controlli, ma tramite ItemsSource si imposta la lista che sta alla radice dell?albero:

<TreeView ItemsSource="{Binding}" DisplayMemberPath="Value">
</TreeView>

Ogni ItemContainer generato è di tipo TreeViewItem che eredita da HeaderedItemsControl e perciò ha sia un Header (il valore ottenuto da DisplayMemberPath), sia ItemsSource ed è quindi a sua volta un elenco di dati. In questo modo si ottiene una serie di elenchi ricorsivi che permettono di mostrare una sorgente dati gerarchica.

Proseguendo con l?esempio precedente, occorre indicare ad ogni elemento come deve popolare a sua volta la propria collezione di figli. Per farlo si utilizza lo HierarchicalDataTemplate, un template specifico che permette, oltre a specificare il template di ogni elemento, di indicare l?ItemsSource e l?ItemTemplate da utilizzare per ogni figlio. Per caricare quindi l?XML proposto ad inizio articolo, si deve indicare tramite Binding di recuperare la collezione di nodi "item":

<Window>
    <Window.Resources>

        <HierarchicalDataTemplate
              x:Key="childTemplate"
              ItemsSource="{Binding XPath=item}">
            <TextBlock Text="{Binding XPath=@value}" />
        </HierarchicalDataTemplate>

    </Window.Resources>


    <TreeView
         ItemsSource="{Binding}"
         ItemTemplate="{StaticResource childTemplate}">

    </TreeView>

</Window>

Ed ecco il risultato:

TreeView WPF

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