I have an application on production with a TreeView control but when the client want to expand or collapse the tree, he finds it very annoying to click on the toggle button because the button is too small. I have tried everything to restyle the button, but either it messes with my other control or I lose completely the functionality of Expand/Collapse when I succeed on styling it. Here is the button : enter image description here
Here is how my code works :
<ListBox.ItemTemplate>
<DataTemplate>
<TreeView x:Name="EntityTreeView" BorderThickness="0">
<HeaderedContentControl>
<StackPanel Orientation="Horizontal" Margin="0,0,0,0" >
.....
</StackPanel>
</HeaderedContentControl>
<TreeViewItem>
<ScrollViewer HorizontalScrollBarVisibility="Auto" MaxHeight="300">
<StackPanel Orientation="Horizontal">
<Grid Name="Cursor" Height="50" Width="50" Focusable="False">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
....
</Grid>
<!-- Entity's parameter list -->
<ListBox Grid.Column="1" x:Name="parametersList" ItemsSource="{Binding Path=Parameters, UpdateSourceTrigger=PropertyChanged}" BorderThickness="0">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Visibility="{Binding Path=Visible}">
.....
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</ScrollViewer>
</TreeViewItem>
</TreeView>
</DataTemplate>
</ListBox.ItemTemplate>
This is what I'm trying to make it work :
</ResourceDictionary>
<!-- Style for TreeView expanders that are too small -->
<!-- Toggle Button -->
<Style x:Key="ExpandCollapseToggleStyle" TargetType="ToggleButton">
<Setter Property="Focusable" Value="False"/>
<Setter Property="Width" Value="24"/>
<Setter Property="Height" Value="24"/>
<Setter Property="Padding" Value="4"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Grid Width="24" Height="24">
<ContentPresenter/>
<Path x:Name="Arrow" Fill="Black" Data="M 5,10 L 15,10 L 10,15 Z"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="Arrow" Property="Data" Value="M 5,5 L 15,10 L 5,15 Z"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- TreeViewItem Style (Automatically Applies Expander Style) -->
<Style TargetType="TreeViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TreeViewItem">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- Custom Expander Button -->
<ToggleButton x:Name="Expander"
IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource TemplatedParent}}"
Style="{StaticResource ExpandCollapseToggleStyle}"/>
<!-- TreeViewItem Header -->
<ContentPresenter Grid.Column="1" ContentSource="Header" Margin="5,0,0,0"/>
<!-- Items Presenter -->
<ItemsPresenter Grid.Column="1" Margin="20,0,0,0"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
