123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- <TreeView x:Class="WpfDemo.ReportsTreeView"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:local="clr-namespace:WpfDemo">
- <TreeView.ItemContainerStyle>
- <Style TargetType="{x:Type TreeViewItem}">
- <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
- <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type TreeViewItem}">
- <Grid>
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto"/>
- <RowDefinition/>
- </Grid.RowDefinitions>
- <ToggleButton x:Name="Expander" ClickMode="Press" IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" Opacity="0"/>
- <ContentPresenter x:Name="PART_Header" ContentSource="Header"/>
- <ItemsPresenter x:Name="ItemsHost" Grid.Row="1"/>
- </Grid>
- <ControlTemplate.Triggers>
- <Trigger Property="IsExpanded" Value="false">
- <Setter Property="Visibility" TargetName="ItemsHost" Value="Collapsed"/>
- </Trigger>
- <Trigger Property="HasItems" Value="false">
- <Setter Property="Visibility" TargetName="Expander" Value="Hidden"/>
- </Trigger>
- </ControlTemplate.Triggers>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- </TreeView.ItemContainerStyle>
- <TreeView.Resources>
- <Geometry x:Key="DownArrow">M 0,0 L 5,5 L 10,0</Geometry>
- <Geometry x:Key="UpArrow">M 0,5 L 5,0 L 10,5</Geometry>
- <HierarchicalDataTemplate DataType="{x:Type local:CategoryItem}" ItemsSource="{Binding Reports}" >
- <Border Background="WhiteSmoke" Height="25" Padding="8,0,7,0" BorderThickness="0,0,0,1" BorderBrush="White" IsHitTestVisible="False">
- <Grid>
- <Rectangle Width="16" Height="14" HorizontalAlignment="Left" VerticalAlignment="Center">
- <Rectangle.Fill>
- <DrawingBrush>
- <DrawingBrush.Drawing>
- <DrawingGroup>
- <DrawingGroup.Children>
- <GeometryDrawing Brush="#FFF6F6F6" Geometry="F1M1.5,1L9.61,1 10.61,3 13.496,3C14.323,3,14.996,3.673,14.996,4.5L14.996,12.5C14.996,13.327,14.323,14,13.496,14L1.5,14C0.673,14,0,13.327,0,12.5L0,2.5C0,1.673,0.673,1,1.5,1" />
- <GeometryDrawing Brush="#FFEFEFF0" Geometry="F1M1.9998,3.0004L1.9998,4.0004 8.8738,4.0004 8.3738,3.0004z" />
- <GeometryDrawing Brush="#FFDBB679" Geometry="F1M2,3L8.374,3 8.874,4 2,4z M13.496,4L10,4 9.992,4 8.992,2 1.5,2C1.225,2,1,2.224,1,2.5L1,12.5C1,12.776,1.225,13,1.5,13L13.496,13C13.773,13,13.996,12.776,13.996,12.5L13.996,4.5C13.996,4.224,13.773,4,13.496,4" />
- </DrawingGroup.Children>
- </DrawingGroup>
- </DrawingBrush.Drawing>
- </DrawingBrush>
- </Rectangle.Fill>
- </Rectangle>
- <TextBlock Text="{Binding Category}" FontSize="12" FontWeight="Bold" VerticalAlignment="Center" Margin="24,0,0,0"/>
- <Path x:Name="arrow" Data="{StaticResource DownArrow}" HorizontalAlignment="Right" VerticalAlignment="Center" Stroke="DarkGray"/>
- </Grid>
- </Border>
- <HierarchicalDataTemplate.Triggers>
- <DataTrigger Binding="{Binding IsExpanded, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TreeViewItem}}}" Value="True">
- <Setter TargetName="arrow" Property="Data" Value="{StaticResource UpArrow}"/>
- </DataTrigger>
- </HierarchicalDataTemplate.Triggers>
- </HierarchicalDataTemplate>
- <DataTemplate DataType="{x:Type local:ReportItem}">
- <Border x:Name="bd" Padding="10,2,10,2" BorderThickness="0,0,0,1" BorderBrush="WhiteSmoke">
- <StackPanel Orientation="Vertical">
- <TextBlock x:Name="text" Text="{Binding DisplayName}" VerticalAlignment="Center"/>
- <TextBlock x:Name="tags" Text="{Binding Tags}" VerticalAlignment="Center" FontSize="10" Opacity="0.4"/>
- </StackPanel>
- </Border>
- <DataTemplate.Triggers>
- <Trigger Property="IsMouseOver" Value="True">
- <Setter TargetName="bd" Property="Background" Value="Whitesmoke"/>
- </Trigger>
- <DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TreeViewItem}}}" Value="True">
- <Setter TargetName="bd" Property="Background" Value="#7092BE"/>
- <Setter TargetName="text" Property="Foreground" Value="White"/>
- <Setter TargetName="tags" Property="Foreground" Value="White"/>
- </DataTrigger>
- <DataTrigger Binding="{Binding Tags}" Value="">
- <Setter TargetName="tags" Property="Visibility" Value="Collapsed"/>
- </DataTrigger>
- </DataTemplate.Triggers>
- </DataTemplate>
- </TreeView.Resources>
- </TreeView>
|