2017-10-13 7 views
1

J'essaie de changer la conception d'un TreeView, de sorte que j'ajoute une bordure autour de chaque TreeViewItem. Comme vous le savez, si j'ajouter une bordure à une TreeViewItem, comme sicomment ajouter une bordure autour de treeViewItem, y compris la flèche WPF/C#

<TreeView Name="treeView"> 
    <TreeView.ItemContainerStyle> 
    <Style TargetType="TreeViewItem"> 
     <Setter Property="IsExpanded" Value="true"> 
     </Setter> 
     <Setter Property="BorderBrush" Value="Green"></Setter> 
     <Setter Property="BorderThickness" Value="2,2,2,2" /> 
    </Style> 
    </TreeView.ItemContainerStyle> 
    <TreeView.ItemTemplate> 
     <-- my template --> 
    </TreeView.ItemTemplate> 
</TreeView> 

la frontière ne sera pas autour de la flèche, ce sera comme ceci:

how treeViewItem border works

Qu'est-ce que Je veux faire quelque chose qui ressemble à l'image ci-dessous:

enter image description here

Comment co Je vais y arriver? Est-ce même possible?

Merci.

+0

Vous devez modifier modèle: Voici l'exemple de modifier https://docs.microsoft.com/en-us/dotnet/framework/wpf/controls/treeview-styles-and- modèles – macieqqq

Répondre

0

J'ai réussi à faire quelque chose, ce qui est vraiment risible mais c'est tout ce que j'ai pu trouver ... Je lis à propos de ItemPresenter et ControlTemplate, je pense que cela pourrait être fait en utilisant cela, mais j'ai trouvé l'Expander C'était un peu déroutant, d'autant plus que j'avais des enfants de troisième niveau et que j'étais incapable de trouver quelque chose de pertinent pour faire travailler l'Expander. Donc, ma solution était de faire un gabarit, dans lequel j'avais créé une grille composée de deux rangées: la première étant de hauteur normale, la seconde étant un rectangle de hauteur 1 et -160 marge (pour compenser le retrait).

<StackPanel Background="Transparent" Margin="20,20,20,20"> 
    <Border BorderThickness="1" BorderBrush="Gray" Margin="0"> 
     <TreeView Name="treeView" BorderThickness="0" Background="Transparent" Height="400" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 
      <TreeView.ItemContainerStyle> 
       <Style TargetType="TreeViewItem"> 
        <Setter Property="IsExpanded" Value="{Binding IsExpanded}" /> 
       </Style> 
      </TreeView.ItemContainerStyle> 
      <TreeView.ItemTemplate> 
       <HierarchicalDataTemplate ItemsSource="{Binding Children}"> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="*"/> 
         </Grid.ColumnDefinitions> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="30"/> 
          <RowDefinition Height="*" /> 
         </Grid.RowDefinitions> 
         <Border Grid.Column="0" Grid.Row="0"> 
          <CheckBox IsChecked="{Binding IsChecked, Mode=TwoWay}" Click="CheckBox_Click" VerticalAlignment="Center"> 
           <TextBlock Text="{Binding Description}" Width="250" Margin="0,0,0,0"/> 
          </CheckBox> 
         </Border> 
         <Rectangle Grid.Row="1" Grid.Column="0" HorizontalAlignment="Stretch" Fill="Gray" Height="1" Margin="-160"/> 
        </Grid> 
       </HierarchicalDataTemplate> 
      </TreeView.ItemTemplate> 
     </TreeView> 
    </Border>