2010-07-29 5 views
1

Est-ce que quelqu'un sait comment cacher le bouton [-] pour une vue arborescente? L'arborescence ne sera jamais réduite et, par conséquent, je n'ai pas besoin du noeud racine pour avoir l'option de réduction. Je sais que je pourrais utiliser un listview avec un objet qui indente l'élément [0] à agir comme un nœud racine treeview. Cependant, la liaison que j'utilise, etc. demande un treeview, et je ne sais pas comment accéder au bouton et le désactiver.Treeview hide [+] [-] boutons

+1

@urema - quel langage de codage souhaitez-vous utiliser pour la réponse - C#, VB, VC++, etc.? – ChrisBD

+1

Voir ceci pour C# http://stackoverflow.com/questions/161378/treeview-sign – codingbadger

+1

Java? Javascript? Haskell? – relet

Répondre

5

Cela devrait fonctionner. Vous devez modifier le ControlTemplate du TreeViewItem, le bouton [+]/[-] est en fait un ToggleButton dans le ControlTemplate de TreeViewItem, donc tout ce que vous devez faire est de mettre sa visibilité à l'état caché ou réduit.

Créez un projet appelé "StackOverflowTests" (donc vous n'avez rien à changer) et collez ce code dans votre fichier Window1.xaml. Si le travail dès la sortie de la boîte:

<ControlTemplate x:Key="invisibleButtonTreeViewItemTemplate" TargetType="TreeViewItem" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto" MinWidth="19" /> 
       <ColumnDefinition Width="Auto" /> 
       <ColumnDefinition Width="*" /> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition /> 
      </Grid.RowDefinitions> 
      <!-- Make the ToggleButton invisible --> 
      <ToggleButton IsChecked="False" Visibility="Hidden" ClickMode="Press" Name="Expander" /> 
      <Border BorderThickness="{TemplateBinding Border.BorderThickness}" Padding="{TemplateBinding Control.Padding}" BorderBrush="{TemplateBinding Border.BorderBrush}" Background="{TemplateBinding Panel.Background}" Name="Bd" SnapsToDevicePixels="True" Grid.Column="1"> 
       <ContentPresenter Content="{TemplateBinding HeaderedContentControl.Header}" ContentTemplate="{TemplateBinding HeaderedContentControl.HeaderTemplate}" ContentStringFormat="{TemplateBinding HeaderedItemsControl.HeaderStringFormat}" ContentSource="Header" Name="PART_Header" HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" /> 
      </Border> 
      <ItemsPresenter Name="ItemsHost" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2" /> 
     </Grid> 
     <ControlTemplate.Triggers> 
      <!-- Remove this trigger so it does not collapse on double click or--> 
      <!--<Trigger Property="TreeViewItem.IsExpanded"> 
       <Setter Property="UIElement.Visibility" TargetName="ItemsHost"> 
        <Setter.Value> 
         <x:Static Member="Visibility.Collapsed" /> 
        </Setter.Value> 
       </Setter> 
       <Trigger.Value> 
        <s:Boolean>False</s:Boolean> 
       </Trigger.Value> 
      </Trigger>--> 
      <Trigger Property="ItemsControl.HasItems"> 
       <Setter Property="UIElement.Visibility" TargetName="Expander"> 
        <Setter.Value> 
         <x:Static Member="Visibility.Hidden" /> 
        </Setter.Value> 
       </Setter> 
       <Trigger.Value> 
        <s:Boolean>False</s:Boolean> 
       </Trigger.Value> 
      </Trigger> 
      <Trigger Property="TreeViewItem.IsSelected"> 
       <Setter Property="Panel.Background" TargetName="Bd"> 
        <Setter.Value> 
         <DynamicResource ResourceKey="{x:Static SystemColors.HighlightBrushKey}" /> 
        </Setter.Value> 
       </Setter> 
       <Setter Property="TextElement.Foreground"> 
        <Setter.Value> 
         <DynamicResource ResourceKey="{x:Static SystemColors.HighlightTextBrushKey}" /> 
        </Setter.Value> 
       </Setter> 
       <Trigger.Value> 
        <s:Boolean>True</s:Boolean> 
       </Trigger.Value> 
      </Trigger> 
      <MultiTrigger> 
       <MultiTrigger.Conditions> 
        <Condition Property="TreeViewItem.IsSelected"> 
         <Condition.Value> 
          <s:Boolean>True</s:Boolean> 
         </Condition.Value> 
        </Condition> 
        <Condition Property="Selector.IsSelectionActive"> 
         <Condition.Value> 
          <s:Boolean>False</s:Boolean> 
         </Condition.Value> 
        </Condition> 
       </MultiTrigger.Conditions> 
       <Setter Property="Panel.Background" TargetName="Bd"> 
        <Setter.Value> 
         <DynamicResource ResourceKey="{x:Static SystemColors.ControlBrushKey}" /> 
        </Setter.Value> 
       </Setter> 
       <Setter Property="TextElement.Foreground"> 
        <Setter.Value> 
         <DynamicResource ResourceKey="{x:Static SystemColors.ControlTextBrushKey}" /> 
        </Setter.Value> 
       </Setter> 
      </MultiTrigger> 
      <Trigger Property="UIElement.IsEnabled"> 
       <Setter Property="TextElement.Foreground"> 
        <Setter.Value> 
         <DynamicResource ResourceKey="{x:Static SystemColors.GrayTextBrushKey}" /> 
        </Setter.Value> 
       </Setter> 
       <Trigger.Value> 
        <s:Boolean>False</s:Boolean> 
       </Trigger.Value> 
      </Trigger> 
     </ControlTemplate.Triggers> 
    </ControlTemplate> 

    <Style TargetType="{x:Type TreeViewItem}"> 

     <Setter Property="Template" Value="{StaticResource invisibleButtonTreeViewItemTemplate}" /> 
    </Style> 

</Window.Resources> 
<TreeView> 
    <TreeViewItem Header="Item 1" IsExpanded="True"> 
     <TreeViewItem Header="Item 1.1" IsExpanded="True" /> 
     <TreeViewItem Header="Item 1.2" IsExpanded="True"> 
      <TreeViewItem Header="Item 1.2.1" IsExpanded="True" /> 
     </TreeViewItem> 
    </TreeViewItem> 
    <TreeViewItem Header="Item 2" IsExpanded="True"> 
     <TreeViewItem Header="Item 2.1" IsExpanded="True" /> 
    </TreeViewItem> 
</TreeView> 

0

I mis en œuvre récemment. Sur le contrôle TreeView Je viens de mettre:

IsHitTestVisible="False" 

et a ajouté dans mon app.xaml:

<Style TargetType="TreeViewItem"> 
    <Setter Property="IsExpanded" Value="True" /> 
</Style> 

Bien que cela supprime la possibilité de sélectionner l'une des TreeViewItems. Je viens juste de le faire parce que je voulais la simple représentation hiérarchique de certaines données que j'avais.