Browse Source

Set double click on presenter instead of whole header

pull/11135/head
Yannick Excoffier 3 years ago
parent
commit
4016da0a2c
  1. 6
      src/Avalonia.Controls/TreeViewItem.cs
  2. 2
      src/Avalonia.Themes.Fluent/Controls/TreeViewItem.xaml
  3. 3
      src/Avalonia.Themes.Simple/Controls/TreeViewItem.xaml

6
src/Avalonia.Controls/TreeViewItem.cs

@ -45,6 +45,7 @@ namespace Avalonia.Controls
private TreeView? _treeView; private TreeView? _treeView;
private Control? _header; private Control? _header;
private Control? _headerPresenter;
private int _level; private int _level;
private bool _templateApplied; private bool _templateApplied;
private bool _deferredBringIntoViewFlag; private bool _deferredBringIntoViewFlag;
@ -255,15 +256,16 @@ namespace Avalonia.Controls
protected override void OnApplyTemplate(TemplateAppliedEventArgs e) protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
{ {
if (_header is InputElement previousInputMethod) if (_headerPresenter is InputElement previousInputMethod)
{ {
previousInputMethod.DoubleTapped -= HeaderDoubleTapped; previousInputMethod.DoubleTapped -= HeaderDoubleTapped;
} }
_header = e.NameScope.Find<Control>("PART_Header"); _header = e.NameScope.Find<Control>("PART_Header");
_headerPresenter = e.NameScope.Find<Control>("PART_HeaderPresenter");
_templateApplied = true; _templateApplied = true;
if (_header is InputElement im) if (_headerPresenter is InputElement im)
{ {
im.DoubleTapped += HeaderDoubleTapped; im.DoubleTapped += HeaderDoubleTapped;
} }

2
src/Avalonia.Themes.Fluent/Controls/TreeViewItem.xaml

@ -75,7 +75,6 @@
MinHeight="{TemplateBinding MinHeight}" MinHeight="{TemplateBinding MinHeight}"
TemplatedControl.IsTemplateFocusTarget="True"> TemplatedControl.IsTemplateFocusTarget="True">
<Grid Name="PART_Header" <Grid Name="PART_Header"
Background="Transparent"
ColumnDefinitions="Auto, *" ColumnDefinitions="Auto, *"
Margin="{TemplateBinding Level, Mode=OneWay, Converter={StaticResource TreeViewItemLeftMarginConverter}}"> Margin="{TemplateBinding Level, Mode=OneWay, Converter={StaticResource TreeViewItemLeftMarginConverter}}">
<Panel Name="PART_ExpandCollapseChevronContainer" <Panel Name="PART_ExpandCollapseChevronContainer"
@ -88,6 +87,7 @@
<ContentPresenter Name="PART_HeaderPresenter" <ContentPresenter Name="PART_HeaderPresenter"
Grid.Column="1" Grid.Column="1"
Focusable="False" Focusable="False"
Background="Transparent"
Content="{TemplateBinding Header}" Content="{TemplateBinding Header}"
ContentTemplate="{TemplateBinding HeaderTemplate}" ContentTemplate="{TemplateBinding HeaderTemplate}"
HorizontalAlignment="{TemplateBinding HorizontalAlignment}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}"

3
src/Avalonia.Themes.Simple/Controls/TreeViewItem.xaml

@ -44,18 +44,19 @@
Focusable="True" Focusable="True"
TemplatedControl.IsTemplateFocusTarget="True"> TemplatedControl.IsTemplateFocusTarget="True">
<Grid Name="PART_Header" <Grid Name="PART_Header"
Background="Transparent"
Margin="{TemplateBinding Level, Margin="{TemplateBinding Level,
Mode=OneWay, Mode=OneWay,
Converter={StaticResource LeftMarginConverter}}" Converter={StaticResource LeftMarginConverter}}"
ColumnDefinitions="16, *"> ColumnDefinitions="16, *">
<ToggleButton Name="PART_ExpandCollapseChevron" <ToggleButton Name="PART_ExpandCollapseChevron"
Focusable="False" Focusable="False"
Background="Transparent"
IsChecked="{TemplateBinding IsExpanded, IsChecked="{TemplateBinding IsExpanded,
Mode=TwoWay}" Mode=TwoWay}"
Theme="{StaticResource SimpleTreeViewItemToggleButtonTheme}" /> Theme="{StaticResource SimpleTreeViewItemToggleButtonTheme}" />
<ContentPresenter Name="PART_HeaderPresenter" <ContentPresenter Name="PART_HeaderPresenter"
Grid.Column="1" Grid.Column="1"
Background="Transparent"
Padding="{TemplateBinding Padding}" Padding="{TemplateBinding Padding}"
HorizontalContentAlignment="{TemplateBinding HorizontalAlignment}" HorizontalContentAlignment="{TemplateBinding HorizontalAlignment}"
Content="{TemplateBinding Header}" Content="{TemplateBinding Header}"

Loading…
Cancel
Save