From 4120f59c9046ef67572fe39907f4b084e07a0acc Mon Sep 17 00:00:00 2001 From: Dong Bin Date: Mon, 14 Apr 2025 01:21:20 +0800 Subject: [PATCH 1/3] feat: use multibinding for TreeViewItem indentation. --- src/Semi.Avalonia/Controls/TreeView.axaml | 28 +++++++++---------- .../Converters/TreeViewItemIndentConverter.cs | 25 +++++++++++++++++ 2 files changed, 39 insertions(+), 14 deletions(-) create mode 100644 src/Semi.Avalonia/Converters/TreeViewItemIndentConverter.cs diff --git a/src/Semi.Avalonia/Controls/TreeView.axaml b/src/Semi.Avalonia/Controls/TreeView.axaml index 43eae95..5d04527 100644 --- a/src/Semi.Avalonia/Controls/TreeView.axaml +++ b/src/Semi.Avalonia/Controls/TreeView.axaml @@ -1,7 +1,7 @@ @@ -40,8 +40,8 @@ AllowAutoHide="{TemplateBinding (ScrollViewer.AllowAutoHide)}" Background="{TemplateBinding Background}" HorizontalScrollBarVisibility="{TemplateBinding (ScrollViewer.HorizontalScrollBarVisibility)}" - IsScrollChainingEnabled="{TemplateBinding (ScrollViewer.IsScrollChainingEnabled)}" IsDeferredScrollingEnabled="{TemplateBinding (ScrollViewer.IsDeferredScrollingEnabled)}" + IsScrollChainingEnabled="{TemplateBinding (ScrollViewer.IsScrollChainingEnabled)}" VerticalScrollBarVisibility="{TemplateBinding (ScrollViewer.VerticalScrollBarVisibility)}"> - - + @@ -71,10 +67,10 @@ Background="Transparent"> + Foreground="{DynamicResource TreeViewItemIconDefaultForeground}" + Theme="{StaticResource InnerPathIcon}"> @@ -110,16 +106,20 @@ CornerRadius="{TemplateBinding CornerRadius}" Focusable="True" TemplatedControl.IsTemplateFocusTarget="True"> - + + + + + + + values, Type targetType, object? parameter, CultureInfo culture) + { + if (values[0] is int level && values[1] is double indent) + { + return new Thickness( + indent * level, + 0, + 0, + 0); + } + return new Thickness(0); + } +} \ No newline at end of file From 3c4da0f82cbf646a58fdb91f8c35bfcfb4897243 Mon Sep 17 00:00:00 2001 From: Dong Bin Date: Mon, 14 Apr 2025 01:26:10 +0800 Subject: [PATCH 2/3] feat: update per copilot review. --- src/Semi.Avalonia/Converters/TreeViewItemIndentConverter.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Semi.Avalonia/Converters/TreeViewItemIndentConverter.cs b/src/Semi.Avalonia/Converters/TreeViewItemIndentConverter.cs index b0a2e99..170cc5b 100644 --- a/src/Semi.Avalonia/Converters/TreeViewItemIndentConverter.cs +++ b/src/Semi.Avalonia/Converters/TreeViewItemIndentConverter.cs @@ -8,11 +8,11 @@ namespace Semi.Avalonia.Converters; public class TreeViewItemIndentConverter: IMultiValueConverter { - public static TreeViewItemIndentConverter Instance = new(); + public static readonly TreeViewItemIndentConverter Instance = new(); public object? Convert(IList values, Type targetType, object? parameter, CultureInfo culture) { - if (values[0] is int level && values[1] is double indent) + if (values.Count>1 && values[0] is int level && values[1] is double indent) { return new Thickness( indent * level, From cae26f2134be655467f7bff7aa156668a8dc2f02 Mon Sep 17 00:00:00 2001 From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com> Date: Wed, 16 Apr 2025 22:09:11 +0800 Subject: [PATCH 3/3] misc: format codes. --- src/Semi.Avalonia/Controls/TreeView.axaml | 5 ++--- .../Converters/TreeViewItemIndentConverter.cs | 13 +++++-------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/Semi.Avalonia/Controls/TreeView.axaml b/src/Semi.Avalonia/Controls/TreeView.axaml index 5d04527..75db3f4 100644 --- a/src/Semi.Avalonia/Controls/TreeView.axaml +++ b/src/Semi.Avalonia/Controls/TreeView.axaml @@ -52,7 +52,7 @@ - + @@ -118,8 +118,7 @@ Grid.Column="0" Padding="{DynamicResource TreeViewItemIconMargin}" Focusable="False" - IsChecked="{TemplateBinding IsExpanded, - Mode=TwoWay}" + IsChecked="{TemplateBinding IsExpanded,Mode=TwoWay}" Theme="{StaticResource ToggleButtonTreeViewItemIconButton}" /> values, Type targetType, object? parameter, CultureInfo culture) { - if (values.Count>1 && values[0] is int level && values[1] is double indent) + if (values.Count > 1 && values[0] is int level && values[1] is double indent) { - return new Thickness( - indent * level, - 0, - 0, - 0); + return new Thickness(indent * level, 0, 0, 0); } + return new Thickness(0); } } \ No newline at end of file