2011-09-27 19 views
5

Ho bisogno di un controllo che si comporta come una treeview (si lega a una struttura ad albero, espande i nodi figlio in base alla proprietà IsExpanded dell'oggetto associato), ma visualizza i dati come la griglia (nessun rientro o alternanza di immagini).come appiattire un WPF TreeView

La compressione di espansione si verificherà automaticamente in base all'oggetto associato.

TreeView è perfetto, ho solo bisogno di rimuovere il rientro e l'immagine del triangolo per renderlo verticalmente piatto, come una colonna della griglia.

Suppongo che avrei potuto provare l'override del modello TreeViewItem, ma che semplicemente non visualizza nulla ..

risposta

2

Sulla base del TreeView style on MSDN, qualcosa come questo dovrebbe funzionare:

<Style TargetType="TreeViewItem"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="TreeViewItem"> 
       <StackPanel> 
        <VisualStateManager.VisualStateGroups> 
         <VisualStateGroup x:Name="ExpansionStates"> 
          <VisualState x:Name="Expanded"> 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames 
             Storyboard.TargetProperty="(UIElement.Visibility)" 
             Storyboard.TargetName="ItemsHost"> 
             <DiscreteObjectKeyFrame KeyTime="0" 
              Value="{x:Static Visibility.Visible}" /> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </VisualState> 
          <VisualState x:Name="Collapsed" /> 
         </VisualStateGroup> 
        </VisualStateManager.VisualStateGroups> 
        <ContentPresenter ContentSource="Header" /> 
        <ItemsPresenter Name="ItemsHost" Visibility="Collapsed" /> 
       </StackPanel> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

grazie, giocherò con il controllo dei modelli! –

+0

ha funzionato come un fascino. voi signore siete gentiluomini! –

2

Hai bisogno di un TreeListView (combina la TreeView e ListView a TreeViewItem livello di modello splendidamente)

http://msdn.microsoft.com/en-us/library/ms771523.aspx

+0

Cheers questo è esattamente quello che stavo cercando! Il collegamento che hai è giusto, ma MSDN non si collega quindi al codice reale! Il codice può essere trovato qui (http://archive.msdn.microsoft.com/wpfsamples) –