2017-10-13 122 views
1

我正在嘗試更改TreeView的設計,以便在每個TreeViewItem周圍添加邊框。 正如你可能知道,如果我添加邊框到一個TreeViewItem,像這樣如何在treeViewItem周圍添加邊框,包括箭頭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> 

邊界不會被周圍的箭頭,這將是這樣的:

how treeViewItem border works

什麼我想要做的東西,它看起來像下面的圖片:

enter image description here

如何合作我是否實現了這個目標?它甚至有可能嗎?

謝謝。

+0

你需要編輯模板:這裏是修改https://docs.microsoft.com/en-us/dotnet/framework/wpf/controls/treeview-styles-and-的例子模板 – macieqqq

回答

0

我已經設法做出了一些東西,這真的很可笑,但這是我所能想出來的...... 我閱讀了關於ItemPresenter和ControlTemplate,我認爲可以使用它來完成,但是我發現Expander班級有點混亂,特別是因爲我有三級孩子,我無法找到與使Expander爲他們工作有關的東西。 因此,我的解決方案是製作一個模板,其中我創建了一個由兩行組成的網格:第一個網格爲正常高度,第二個爲高度爲1和-160邊距的矩形(以彌補縮進)。

<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> 

相關問題