ReportsTreeView.xaml 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <TreeView x:Class="WpfDemo.ReportsTreeView"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:local="clr-namespace:WpfDemo">
  5. <TreeView.ItemContainerStyle>
  6. <Style TargetType="{x:Type TreeViewItem}">
  7. <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
  8. <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
  9. <Setter Property="Template">
  10. <Setter.Value>
  11. <ControlTemplate TargetType="{x:Type TreeViewItem}">
  12. <Grid>
  13. <Grid.RowDefinitions>
  14. <RowDefinition Height="Auto"/>
  15. <RowDefinition/>
  16. </Grid.RowDefinitions>
  17. <ToggleButton x:Name="Expander" ClickMode="Press" IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" Opacity="0"/>
  18. <ContentPresenter x:Name="PART_Header" ContentSource="Header"/>
  19. <ItemsPresenter x:Name="ItemsHost" Grid.Row="1"/>
  20. </Grid>
  21. <ControlTemplate.Triggers>
  22. <Trigger Property="IsExpanded" Value="false">
  23. <Setter Property="Visibility" TargetName="ItemsHost" Value="Collapsed"/>
  24. </Trigger>
  25. <Trigger Property="HasItems" Value="false">
  26. <Setter Property="Visibility" TargetName="Expander" Value="Hidden"/>
  27. </Trigger>
  28. </ControlTemplate.Triggers>
  29. </ControlTemplate>
  30. </Setter.Value>
  31. </Setter>
  32. </Style>
  33. </TreeView.ItemContainerStyle>
  34. <TreeView.Resources>
  35. <Geometry x:Key="DownArrow">M 0,0 L 5,5 L 10,0</Geometry>
  36. <Geometry x:Key="UpArrow">M 0,5 L 5,0 L 10,5</Geometry>
  37. <HierarchicalDataTemplate DataType="{x:Type local:CategoryItem}" ItemsSource="{Binding Reports}" >
  38. <Border Background="WhiteSmoke" Height="25" Padding="8,0,7,0" BorderThickness="0,0,0,1" BorderBrush="White" IsHitTestVisible="False">
  39. <Grid>
  40. <Rectangle Width="16" Height="14" HorizontalAlignment="Left" VerticalAlignment="Center">
  41. <Rectangle.Fill>
  42. <DrawingBrush>
  43. <DrawingBrush.Drawing>
  44. <DrawingGroup>
  45. <DrawingGroup.Children>
  46. <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" />
  47. <GeometryDrawing Brush="#FFEFEFF0" Geometry="F1M1.9998,3.0004L1.9998,4.0004 8.8738,4.0004 8.3738,3.0004z" />
  48. <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" />
  49. </DrawingGroup.Children>
  50. </DrawingGroup>
  51. </DrawingBrush.Drawing>
  52. </DrawingBrush>
  53. </Rectangle.Fill>
  54. </Rectangle>
  55. <TextBlock Text="{Binding Category}" FontSize="12" FontWeight="Bold" VerticalAlignment="Center" Margin="24,0,0,0"/>
  56. <Path x:Name="arrow" Data="{StaticResource DownArrow}" HorizontalAlignment="Right" VerticalAlignment="Center" Stroke="DarkGray"/>
  57. </Grid>
  58. </Border>
  59. <HierarchicalDataTemplate.Triggers>
  60. <DataTrigger Binding="{Binding IsExpanded, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TreeViewItem}}}" Value="True">
  61. <Setter TargetName="arrow" Property="Data" Value="{StaticResource UpArrow}"/>
  62. </DataTrigger>
  63. </HierarchicalDataTemplate.Triggers>
  64. </HierarchicalDataTemplate>
  65. <DataTemplate DataType="{x:Type local:ReportItem}">
  66. <Border x:Name="bd" Padding="10,2,10,2" BorderThickness="0,0,0,1" BorderBrush="WhiteSmoke">
  67. <StackPanel Orientation="Vertical">
  68. <TextBlock x:Name="text" Text="{Binding DisplayName}" VerticalAlignment="Center"/>
  69. <TextBlock x:Name="tags" Text="{Binding Tags}" VerticalAlignment="Center" FontSize="10" Opacity="0.4"/>
  70. </StackPanel>
  71. </Border>
  72. <DataTemplate.Triggers>
  73. <Trigger Property="IsMouseOver" Value="True">
  74. <Setter TargetName="bd" Property="Background" Value="Whitesmoke"/>
  75. </Trigger>
  76. <DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TreeViewItem}}}" Value="True">
  77. <Setter TargetName="bd" Property="Background" Value="#7092BE"/>
  78. <Setter TargetName="text" Property="Foreground" Value="White"/>
  79. <Setter TargetName="tags" Property="Foreground" Value="White"/>
  80. </DataTrigger>
  81. <DataTrigger Binding="{Binding Tags}" Value="">
  82. <Setter TargetName="tags" Property="Visibility" Value="Collapsed"/>
  83. </DataTrigger>
  84. </DataTemplate.Triggers>
  85. </DataTemplate>
  86. </TreeView.Resources>
  87. </TreeView>