From ecbe87bf3cc861faaed3f9f3a346ecbfe3a1266a Mon Sep 17 00:00:00 2001 From: rabbitism Date: Thu, 25 Jan 2024 23:19:16 +0800 Subject: [PATCH] feat: add scroll tab control. --- demo/Directory.Build.props | 2 +- .../Pages/TabControlDemo.axaml | 141 +++++++++++------- .../Pages/TabControlDemo.axaml.cs | 2 + .../ViewModels/TabControlDemoViewModel.cs | 15 ++ src/Package.props | 4 +- src/Semi.Avalonia/Controls/TabControl.axaml | 86 +++++++++++ 6 files changed, 191 insertions(+), 59 deletions(-) create mode 100644 demo/Semi.Avalonia.Demo/ViewModels/TabControlDemoViewModel.cs diff --git a/demo/Directory.Build.props b/demo/Directory.Build.props index ae8bdf5..74d63f7 100644 --- a/demo/Directory.Build.props +++ b/demo/Directory.Build.props @@ -1,6 +1,6 @@ enable - 11.0.0 + 11.0.7 diff --git a/demo/Semi.Avalonia.Demo/Pages/TabControlDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/TabControlDemo.axaml index 94ba2ca..edb64b9 100644 --- a/demo/Semi.Avalonia.Demo/Pages/TabControlDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/TabControlDemo.axaml @@ -4,63 +4,92 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:vm="clr-namespace:Semi.Avalonia.Demo.ViewModels;assembly=Semi.Avalonia.Demo" d:DesignHeight="450" d:DesignWidth="800" + x:CompileBindings="True" + x:DataType="vm:TabControlDemoViewModel" mc:Ignorable="d"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tab 1 - Tab 2 - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tab 1 + Tab 2 + + + + + + + + + + + + + + + + diff --git a/demo/Semi.Avalonia.Demo/Pages/TabControlDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/TabControlDemo.axaml.cs index a01e76a..3d5bb3d 100644 --- a/demo/Semi.Avalonia.Demo/Pages/TabControlDemo.axaml.cs +++ b/demo/Semi.Avalonia.Demo/Pages/TabControlDemo.axaml.cs @@ -1,6 +1,7 @@ using Avalonia; using Avalonia.Controls; using Avalonia.Markup.Xaml; +using Semi.Avalonia.Demo.ViewModels; namespace Semi.Avalonia.Demo.Pages; @@ -9,5 +10,6 @@ public partial class TabControlDemo : UserControl public TabControlDemo() { InitializeComponent(); + this.DataContext = new TabControlDemoViewModel(); } } \ No newline at end of file diff --git a/demo/Semi.Avalonia.Demo/ViewModels/TabControlDemoViewModel.cs b/demo/Semi.Avalonia.Demo/ViewModels/TabControlDemoViewModel.cs new file mode 100644 index 0000000..bbe153e --- /dev/null +++ b/demo/Semi.Avalonia.Demo/ViewModels/TabControlDemoViewModel.cs @@ -0,0 +1,15 @@ +using System.Collections.ObjectModel; +using System.Linq; +using CommunityToolkit.Mvvm.ComponentModel; + +namespace Semi.Avalonia.Demo.ViewModels; + +public class TabControlDemoViewModel: ObservableObject +{ + public ObservableCollection Items { get; set; } + + public TabControlDemoViewModel() + { + Items = new ObservableCollection(Enumerable.Range(1, 200).Select(a => "Tab " + a)); + } +} \ No newline at end of file diff --git a/src/Package.props b/src/Package.props index c3a98e0..3ad4e31 100644 --- a/src/Package.props +++ b/src/Package.props @@ -3,11 +3,11 @@ net6.0;netstandard2.0 enable 11 - 11.0.1 + 11.0.7 IRIHI Technology Avalonia Theme inspired by Semi Design. https://github.com/irihitech/Semi.Avalonia - 11.0.0 + 11.0.7 MIT \ No newline at end of file diff --git a/src/Semi.Avalonia/Controls/TabControl.axaml b/src/Semi.Avalonia/Controls/TabControl.axaml index 90014f5..bd514f1 100644 --- a/src/Semi.Avalonia/Controls/TabControl.axaml +++ b/src/Semi.Avalonia/Controls/TabControl.axaml @@ -65,4 +65,90 @@ --> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +