123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- <TreeView x:Class="CustomControls.TreeView"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:local="clr-namespace:System.Windows.Forms"
- xmlns:local1="clr-namespace:CustomControls">
- <TreeView.Resources>
- <SolidColorBrush x:Key="TreeViewItem.TreeArrow.Static.Stroke" Color="#FF262626"/>
- <SolidColorBrush x:Key="TreeViewItem.TreeArrow.Static.Fill" Color="#FF595959"/>
- <SolidColorBrush x:Key="TreeViewItem.TreeArrow.MouseOver.Stroke" Color="#FF1CC4F7"/>
- <SolidColorBrush x:Key="TreeViewItem.TreeArrow.MouseOver.Fill" Color="#FF82DFFB"/>
- <SolidColorBrush x:Key="TreeViewItem.TreeArrow.Static.Checked.Stroke" Color="#FF262626"/>
- <SolidColorBrush x:Key="TreeViewItem.TreeArrow.Static.Checked.Fill" Color="#FF595959"/>
- <SolidColorBrush x:Key="TreeViewItem.TreeArrow.MouseOver.Checked.Stroke" Color="#FF1CC4F7"/>
- <SolidColorBrush x:Key="TreeViewItem.TreeArrow.MouseOver.Checked.Fill" Color="#FF82DFFB"/>
- <PathGeometry x:Key="TreeArrow" Figures="M0,0 L0,6 L6,0 z"/>
- <Style x:Key="ExpandCollapseToggleStyle" TargetType="{x:Type ToggleButton}">
- <Setter Property="Focusable" Value="False"/>
- <Setter Property="Width" Value="16"/>
- <Setter Property="Height" Value="16"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type ToggleButton}">
- <Border Background="Transparent" Height="16" Padding="5,5,5,5" Width="16">
- <Path x:Name="ExpandPath" Data="{StaticResource TreeArrow}" Fill="{StaticResource TreeViewItem.TreeArrow.Static.Fill}" Stroke="{StaticResource TreeViewItem.TreeArrow.Static.Stroke}">
- <Path.RenderTransform>
- <RotateTransform Angle="135" CenterY="3" CenterX="3"/>
- </Path.RenderTransform>
- </Path>
- </Border>
- <ControlTemplate.Triggers>
- <Trigger Property="IsChecked" Value="True">
- <Setter Property="RenderTransform" TargetName="ExpandPath">
- <Setter.Value>
- <RotateTransform Angle="180" CenterY="3" CenterX="3"/>
- </Setter.Value>
- </Setter>
- <Setter Property="Fill" TargetName="ExpandPath" Value="{StaticResource TreeViewItem.TreeArrow.Static.Checked.Fill}"/>
- <Setter Property="Stroke" TargetName="ExpandPath" Value="{StaticResource TreeViewItem.TreeArrow.Static.Checked.Stroke}"/>
- </Trigger>
- <Trigger Property="IsMouseOver" Value="True">
- <Setter Property="Stroke" TargetName="ExpandPath" Value="{StaticResource TreeViewItem.TreeArrow.MouseOver.Stroke}"/>
- <Setter Property="Fill" TargetName="ExpandPath" Value="{StaticResource TreeViewItem.TreeArrow.MouseOver.Fill}"/>
- </Trigger>
- <MultiTrigger>
- <MultiTrigger.Conditions>
- <Condition Property="IsMouseOver" Value="True"/>
- <Condition Property="IsChecked" Value="True"/>
- </MultiTrigger.Conditions>
- <Setter Property="Stroke" TargetName="ExpandPath" Value="{StaticResource TreeViewItem.TreeArrow.MouseOver.Checked.Stroke}"/>
- <Setter Property="Fill" TargetName="ExpandPath" Value="{StaticResource TreeViewItem.TreeArrow.MouseOver.Checked.Fill}"/>
- </MultiTrigger>
- </ControlTemplate.Triggers>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- </TreeView.Resources>
- <TreeView.ItemContainerStyle>
- <Style TargetType="{x:Type TreeViewItem}">
- <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
- <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
- <EventSetter Event="Selected" Handler="TreeViewSelectedItemChanged" />
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type TreeViewItem}">
- <Grid>
- <Grid.ColumnDefinitions>
- <ColumnDefinition MinWidth="10" Width="Auto"/>
- <ColumnDefinition Width="Auto"/>
- <ColumnDefinition Width="*"/>
- </Grid.ColumnDefinitions>
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto"/>
- <RowDefinition/>
- </Grid.RowDefinitions>
- <ToggleButton x:Name="Expander" ClickMode="Press" IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ExpandCollapseToggleStyle}"/>
- <ContentPresenter x:Name="PART_Header" ContentSource="Header" Grid.Column="1"/>
- <ItemsPresenter x:Name="ItemsHost" Grid.Column="1" Grid.ColumnSpan="2" 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>
- <Trigger Property="IsEnabled" Value="false">
- <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
- </Trigger>
- </ControlTemplate.Triggers>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- </TreeView.ItemContainerStyle>
- <TreeView.ItemTemplate>
- <HierarchicalDataTemplate DataType="{x:Type local:TreeNode}" ItemsSource="{Binding Nodes}" >
- <StackPanel Orientation="Horizontal" Margin="2,1,2,0">
- <CheckBox IsChecked="{Binding IsChecked}" Margin="0,0,5,0" Visibility="{Binding CheckBoxes, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local1:TreeView}}, FallbackValue=Collapsed}"/>
- <Image x:Name="PART_Image" Source="{Binding ImageSource}" Margin="0,0,5,0" Width="{Binding ImageSourceWidth}" Height="{Binding ImageSourceHeight}" Visibility="{Binding Images, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local1:TreeView}}, FallbackValue=Visible}"/>
- <TextBlock x:Name="PART_TextBlock" Text="{Binding Text}" Padding="1" Background="{Binding BackColorBrush}" Foreground="{Binding ForeColorBrush}" VerticalAlignment="Center"/>
- <TextBox x:Name="PART_TextBox" Text="{Binding Text, UpdateSourceTrigger=PropertyChanged}" Height="19" Padding="2,1,2,0" Margin="-4,-1,-4,-1" Visibility="Collapsed" IsVisibleChanged="PART_TextBox_IsVisibleChanged" LostFocus="PART_TextBox_LostFocus" KeyDown="PART_TextBox_KeyDown" />
- </StackPanel>
- <HierarchicalDataTemplate.Triggers>
- <DataTrigger Binding="{Binding IsEditing}" Value="true">
- <Setter TargetName="PART_TextBlock" Property="Visibility" Value="Collapsed"/>
- <Setter TargetName="PART_TextBox" Property="Visibility" Value="Visible"/>
- </DataTrigger>
- <MultiDataTrigger>
- <MultiDataTrigger.Conditions>
- <Condition Binding="{Binding IsSelected}" Value="true"/>
- <Condition Binding="{Binding IsSelectionActive, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TreeViewItem}}}" Value="true"/>
- </MultiDataTrigger.Conditions>
- <Setter Property="Background" TargetName="PART_TextBlock" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
- <Setter Property="Foreground" TargetName="PART_TextBlock" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
- </MultiDataTrigger>
- <MultiDataTrigger>
- <MultiDataTrigger.Conditions>
- <Condition Binding="{Binding IsSelected}" Value="true"/>
- <Condition Binding="{Binding IsSelectionActive, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TreeViewItem}}}" Value="false"/>
- <Condition Binding="{Binding HideSelection, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local1:TreeView}}}" Value="false"/>
- </MultiDataTrigger.Conditions>
- <Setter Property="Background" TargetName="PART_TextBlock" Value="{DynamicResource {x:Static SystemColors.InactiveSelectionHighlightBrushKey}}"/>
- <Setter Property="Foreground" TargetName="PART_TextBlock" Value="{DynamicResource {x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}}"/>
- </MultiDataTrigger>
- </HierarchicalDataTemplate.Triggers>
- </HierarchicalDataTemplate>
- </TreeView.ItemTemplate>
- </TreeView>
|