WPF TreeView Style 조언 부탁드립니다.


이미지와 같이 TreeView를 만들었는데 Style이 이상한건지
하위 TreeViewItem 을 생성하고 그 item의 또 하위를 만들 시 이미지와 같이 메인에 있는 라인이 최하위의 라인까지 그려지는 현상이 생깁니다…
혹시 어디가 문제인지 알려주실 수 있나요?

사용한 스타일을 올리겠습니다.

 <Style x:Key="ToggleButton.Rectangle" TargetType="ToggleButton">
     <Setter Property="Focusable" Value="False" />
     <Setter Property="Template">
         <Setter.Value>
             <ControlTemplate TargetType="ToggleButton">
                 <Grid Width="15"
                       Height="13"
                       SnapsToDevicePixels="True">
                     <Border Width="9"
                             Height="9"
                             Background="{TemplateBinding Background}"
                             CornerRadius="1" />
                 </Grid>
             </ControlTemplate>
         </Setter.Value>
     </Setter>
 </Style>

 <Style x:Key="ToggleButton.Ellipse" TargetType="ToggleButton">
     <Setter Property="Focusable" Value="False" />
     <Setter Property="Template">
         <Setter.Value>
             <ControlTemplate TargetType="ToggleButton">
                 <Grid Width="15"
                       Height="13"
                       SnapsToDevicePixels="True">
                     <Ellipse Width="9"
                              Height="9"
                              Fill="{TemplateBinding Background}"
                              Opacity="1" />
                 </Grid>
             </ControlTemplate>
         </Setter.Value>
     </Setter>
 </Style>


 <Style x:Key="TreeView.Main" TargetType="{x:Type TreeViewItem}">
     <Setter Property="Foreground" Value="#EAEAEA" />
     <Setter Property="FontSize" Value="12" />
     <Setter Property="Background" Value="Red" />
     <Setter Property="Margin" Value="0" />
     <Setter Property="Template">
         <Setter.Value>
             <ControlTemplate TargetType="{x:Type TreeViewItem}">
                 <Grid>
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="Auto" MinWidth="19" />
                         <ColumnDefinition Width="Auto" />
                         <ColumnDefinition Width="*" />
                     </Grid.ColumnDefinitions>
                     <Grid.RowDefinitions>
                         <RowDefinition MinHeight="20" />
                         <RowDefinition />
                     </Grid.RowDefinitions>
                     <Rectangle Grid.RowSpan="2"
                                Width="1"
                                Margin="0,7,1,-5"
                                Fill="White"
                                SnapsToDevicePixels="true"
                                Stroke="#8F8F8F"
                                StrokeDashArray="0,2"
                                StrokeDashCap="Square" />
                     <ToggleButton x:Name="Expander"
                                   Margin="-1,0,0,0"
                                   Background="{TemplateBinding Background}"
                                   ClickMode="Press"
                                   IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource TemplatedParent}}"
                                   Style="{StaticResource ToggleButton.Rectangle}" />
                     <Border Name="Bd"
                             Grid.Column="1"
                             Padding="{TemplateBinding Padding}"
                             Background="Transparent"
                             BorderBrush="{TemplateBinding BorderBrush}"
                             BorderThickness="{TemplateBinding BorderThickness}"
                             SnapsToDevicePixels="True">
                         <ContentPresenter x:Name="PART_Header"
                                           HorizontalAlignment="Center"
                                           VerticalAlignment="Center"
                                           ContentSource="Header" />
                     </Border>
                     <ItemsPresenter x:Name="ItemsHost"
                                     Grid.Row="1"
                                     Grid.Column="1"
                                     Grid.ColumnSpan="2" />
                 </Grid>
             </ControlTemplate>
         </Setter.Value>
     </Setter>
 </Style>



 <Style x:Key="TreeView.Lv2"
        BasedOn="{StaticResource TreeView.Main}"
        TargetType="{x:Type TreeViewItem}">
     <Setter Property="Background" Value="Gray" />
     <Setter Property="Foreground" Value="Black" />
     <Setter Property="Template">
         <Setter.Value>
             <ControlTemplate TargetType="{x:Type TreeViewItem}">
                 <Grid>
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="Auto" MinWidth="19" />
                         <ColumnDefinition Width="Auto" />
                         <ColumnDefinition Width="*" />
                     </Grid.ColumnDefinitions>
                     <Grid.RowDefinitions>
                         <RowDefinition MinHeight="20" />
                         <RowDefinition />
                     </Grid.RowDefinitions>
                     <Rectangle Grid.RowSpan="2"
                                Width="1"
                                Margin="0,7,1,9"
                                Fill="White"
                                SnapsToDevicePixels="true"
                                Stroke="#8F8F8F"
                                StrokeDashArray="0,2"
                                StrokeDashCap="Square" />

                     <ToggleButton x:Name="Expander"
                                   Margin="-1,0,0,0"
                                   Background="{TemplateBinding Background}"
                                   ClickMode="Press"
                                   IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource TemplatedParent}}"
                                   Style="{StaticResource ToggleButton.Rectangle}" />
                     <Border Name="Bd"
                             Grid.Column="1"
                             Padding="{TemplateBinding Padding}"
                             Background="Transparent"
                             BorderBrush="{TemplateBinding BorderBrush}"
                             BorderThickness="{TemplateBinding BorderThickness}"
                             SnapsToDevicePixels="True">
                         <ContentPresenter x:Name="PART_Header"
                                           HorizontalAlignment="Center"
                                           VerticalAlignment="Center"
                                           ContentSource="Header" />
                     </Border>
                     <ItemsPresenter x:Name="ItemsHost"
                                     Grid.Row="1"
                                     Grid.Column="1"
                                     Grid.ColumnSpan="2" />
                 </Grid>
             </ControlTemplate>
         </Setter.Value>
     </Setter>
 </Style>

 <Style x:Key="TreeView.Lv3"
        BasedOn="{StaticResource TreeView.Main}"
        TargetType="{x:Type TreeViewItem}">
     <Setter Property="Background" Value="Gray" />
     <Setter Property="Template">
         <Setter.Value>
             <ControlTemplate TargetType="{x:Type TreeViewItem}">
                 <Grid>
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="Auto" MinWidth="19" />
                         <ColumnDefinition Width="Auto" />
                         <ColumnDefinition Width="*" />
                     </Grid.ColumnDefinitions>
                     <Grid.RowDefinitions>
                         <RowDefinition MinHeight="20" />
                         <RowDefinition />
                     </Grid.RowDefinitions>
                     <Rectangle Grid.RowSpan="2"
                                Width="1"
                                Margin="0,7,1,9"
                                Fill="White"
                                SnapsToDevicePixels="true"
                                Stroke="#8F8F8F"
                                StrokeDashArray="0,2"
                                StrokeDashCap="Square" />
                     <Rectangle Height="1"
                                Margin="-10,0,5,0"
                                SnapsToDevicePixels="True"
                                Stroke="#8F8F8F"
                                StrokeDashArray="0,2"
                                StrokeDashCap="Square" />
                     <ToggleButton x:Name="Expander"
                                   Margin="-1,0,0,0"
                                   Background="{TemplateBinding Background}"
                                   ClickMode="Press"
                                   IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource TemplatedParent}}"
                                   Style="{StaticResource ToggleButton.Ellipse}" />
                     <Border Name="Bd"
                             Grid.Column="1"
                             Padding="{TemplateBinding Padding}"
                             Background="Transparent"
                             BorderBrush="{TemplateBinding BorderBrush}"
                             BorderThickness="{TemplateBinding BorderThickness}"
                             SnapsToDevicePixels="True">
                         <ContentPresenter x:Name="PART_Header"
                                           HorizontalAlignment="Center"
                                           VerticalAlignment="Center"
                                           ContentSource="Header" />
                     </Border>
                     <ItemsPresenter x:Name="ItemsHost"
                                     Grid.Row="1"
                                     Grid.Column="1"
                                     Grid.ColumnSpan="2" />
                 </Grid>
             </ControlTemplate>
         </Setter.Value>
     </Setter>
 </Style>

lv2의

<Rectangle 
    Grid.RowSpan="2"
    Width="1"
    Margin="0,7,1,9"
    Fill="White"
    SnapsToDevicePixels="true"
    Stroke="#8F8F8F"
    StrokeDashArray="0,2"
    StrokeDashCap="Square" />

이게 itemspresenter 영역까지 쭉 이어져서 하위 목록 높이까지 다 그리고 있네요

1개의 좋아요

Rectangle을 이용해서 선을 만드는 방법 말고 다른게 있을까요? 인터넷에서 사용한 방법이라 따라했던건데 이런 문제가 있었네요…