From f00833368385ef86df6bcc0ecc8715424727c34b Mon Sep 17 00:00:00 2001 From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com> Date: Tue, 8 Apr 2025 21:13:07 +0800 Subject: [PATCH 1/3] feat: sync with TabControl Themes. --- src/Semi.Avalonia/Controls/TabStrip.axaml | 245 +++++++++++++++------- 1 file changed, 175 insertions(+), 70 deletions(-) diff --git a/src/Semi.Avalonia/Controls/TabStrip.axaml b/src/Semi.Avalonia/Controls/TabStrip.axaml index 84d569b..6828287 100644 --- a/src/Semi.Avalonia/Controls/TabStrip.axaml +++ b/src/Semi.Avalonia/Controls/TabStrip.axaml @@ -2,108 +2,213 @@ xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:CompileBindings="True"> + + + + + + + + + + - + - - + + - - - - + + + + + + + + + + + + + + + + + + + - - + + + + + + + - - - - + - - - - - - + Content="{TemplateBinding Content}" + ContentTemplate="{TemplateBinding ContentTemplate}" + CornerRadius="{TemplateBinding CornerRadius}" + FontFamily="{TemplateBinding FontFamily}" + FontWeight="{TemplateBinding FontWeight}" + Foreground="{TemplateBinding Foreground}" /> - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 28a1336413145f8894a63e0929b4da19289d6c05 Mon Sep 17 00:00:00 2001 From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com> Date: Wed, 9 Apr 2025 17:15:20 +0800 Subject: [PATCH 2/3] feat: add TabStripDemo. --- .../Pages/TabStripDemo.axaml | 93 +++++++++++++++++++ .../Pages/TabStripDemo.axaml.cs | 13 +++ .../ViewModels/TabStripDemoViewModel.cs | 10 ++ demo/Semi.Avalonia.Demo/Views/MainView.axaml | 3 + src/Semi.Avalonia/Controls/TabStrip.axaml | 2 + 5 files changed, 121 insertions(+) create mode 100644 demo/Semi.Avalonia.Demo/Pages/TabStripDemo.axaml create mode 100644 demo/Semi.Avalonia.Demo/Pages/TabStripDemo.axaml.cs create mode 100644 demo/Semi.Avalonia.Demo/ViewModels/TabStripDemoViewModel.cs diff --git a/demo/Semi.Avalonia.Demo/Pages/TabStripDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/TabStripDemo.axaml new file mode 100644 index 0000000..b078cba --- /dev/null +++ b/demo/Semi.Avalonia.Demo/Pages/TabStripDemo.axaml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/demo/Semi.Avalonia.Demo/Pages/TabStripDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/TabStripDemo.axaml.cs new file mode 100644 index 0000000..40ccf12 --- /dev/null +++ b/demo/Semi.Avalonia.Demo/Pages/TabStripDemo.axaml.cs @@ -0,0 +1,13 @@ +using Avalonia.Controls; +using Semi.Avalonia.Demo.ViewModels; + +namespace Semi.Avalonia.Demo.Pages; + +public partial class TabStripDemo : UserControl +{ + public TabStripDemo() + { + InitializeComponent(); + this.DataContext = new TabStripDemoViewModel(); + } +} \ No newline at end of file diff --git a/demo/Semi.Avalonia.Demo/ViewModels/TabStripDemoViewModel.cs b/demo/Semi.Avalonia.Demo/ViewModels/TabStripDemoViewModel.cs new file mode 100644 index 0000000..353fc5f --- /dev/null +++ b/demo/Semi.Avalonia.Demo/ViewModels/TabStripDemoViewModel.cs @@ -0,0 +1,10 @@ +using System.Collections.ObjectModel; +using System.Linq; +using CommunityToolkit.Mvvm.ComponentModel; + +namespace Semi.Avalonia.Demo.ViewModels; + +public class TabStripDemoViewModel : ObservableObject +{ + public ObservableCollection Items => new(Enumerable.Range(1, 10).Select(a => "Tab " + a)); +} \ No newline at end of file diff --git a/demo/Semi.Avalonia.Demo/Views/MainView.axaml b/demo/Semi.Avalonia.Demo/Views/MainView.axaml index 3eb3ccd..2f79f72 100644 --- a/demo/Semi.Avalonia.Demo/Views/MainView.axaml +++ b/demo/Semi.Avalonia.Demo/Views/MainView.axaml @@ -219,6 +219,9 @@ + + + diff --git a/src/Semi.Avalonia/Controls/TabStrip.axaml b/src/Semi.Avalonia/Controls/TabStrip.axaml index 6828287..71e6ec6 100644 --- a/src/Semi.Avalonia/Controls/TabStrip.axaml +++ b/src/Semi.Avalonia/Controls/TabStrip.axaml @@ -13,6 +13,7 @@ + + Date: Wed, 9 Apr 2025 17:20:38 +0800 Subject: [PATCH 3/3] feat: set Margin to 0 for the last TabStripItem. --- src/Semi.Avalonia/Controls/TabStrip.axaml | 4 ++-- src/Semi.Avalonia/Styles/TabStrip.axaml | 5 +++++ src/Semi.Avalonia/Styles/_index.axaml | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 src/Semi.Avalonia/Styles/TabStrip.axaml diff --git a/src/Semi.Avalonia/Controls/TabStrip.axaml b/src/Semi.Avalonia/Controls/TabStrip.axaml index 71e6ec6..54f9b0b 100644 --- a/src/Semi.Avalonia/Controls/TabStrip.axaml +++ b/src/Semi.Avalonia/Controls/TabStrip.axaml @@ -13,7 +13,7 @@ - + - + + + \ No newline at end of file diff --git a/src/Semi.Avalonia/Styles/_index.axaml b/src/Semi.Avalonia/Styles/_index.axaml index 574fa22..5afce03 100644 --- a/src/Semi.Avalonia/Styles/_index.axaml +++ b/src/Semi.Avalonia/Styles/_index.axaml @@ -1,3 +1,4 @@  + \ No newline at end of file