WPF TreeView Стиль - PullRequest
       17

WPF TreeView Стиль

0 голосов
/ 21 апреля 2020

Я пытаюсь создать стилизованный элемент управления для проекта WPF. По сути, я хочу получить коллекцию узлов в древовидной структуре, например элемент управления, с подузлами или без них. Поведение, которого я пытаюсь достичь, в начале все узлы будут свернуты. Если вы выбираете узел, он расширяет узел, если вы выбираете другой узел, он расширяет этот узел. Если вы находитесь на выбранном узле, и он развернут, он включает расширение.

Пока у меня есть ControlTemplate, подобный этому

<ControlTemplate TargetType="{x:Type TreeViewItem}">
   <StackPanel>
     <Border x:Name="Border"
       MinHeight="{TemplateBinding MinHeight}"
       Padding="{TemplateBinding Padding}"
       Background="Red"
       BorderBrush="{TemplateBinding BorderBrush}"
       BorderThickness="{TemplateBinding BorderThickness}"
       SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}">
       <Grid>
         <ToggleButton x:Name="Expander"
           ClickMode="Press"
           Style="{StaticResource FlatToggleButton}"
           HorizontalAlignment="Stretch"
           VerticalAlignment="Stretch"
           IsChecked="{Binding Path=IsExpanded, RelativeSource={x:Static RelativeSource.TemplatedParent}, Mode=TwoWay}"/>
         <ContentPresenter x:Name="PART_Header"                                         
           HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
           VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
           ContentSource="Header"
           SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
       </Grid>
     </Border>
     <ItemsPresenter x:Name="ItemsHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
   </StackPanel>
   <ControlTemplate.Triggers>
     <Trigger Property="IsSelected" Value="True">
       <Setter Property="Background" TargetName="Expander" Value="White"/>
     </Trigger>
     <Trigger Property="IsExpanded" Value="False">
       <Setter TargetName="ItemsHost"  Property="Visibility" Value="Collapsed"/>
     </Trigger>
   </ControlTemplate.Triggers>
 </ControlTemplate>

Основная проблема, как представляется, заключается в том, что ToggleButton блокирует событие click для перемещения вверх в TreeView и установки IsSelected

...