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:

Contenuti dell'articolo
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.






Difficoltà
Utilità
Contenuti
Stampa
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!
