From 237fe724753ad8e4923d782b980ce1a76470702f Mon Sep 17 00:00:00 2001 From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com> Date: Tue, 19 Nov 2024 14:49:56 +0800 Subject: [PATCH] feat: enhance Carousel. (cherry picked from commit fa8b2d1f2170dc778fe5ac3cfe5974d3c264214b) --- .../Pages/CarouselDemo.axaml | 90 +++---- src/Semi.Avalonia/Controls/Carousel.axaml | 233 ++++++++++-------- src/Semi.Avalonia/Converters/ItemConverter.cs | 14 ++ .../Converters/ItemToObjectConverter.cs | 26 -- src/Semi.Avalonia/Themes/Dark/Carousel.axaml | 5 +- src/Semi.Avalonia/Themes/Light/Carousel.axaml | 5 +- .../Themes/Shared/Carousel.axaml | 7 +- 7 files changed, 198 insertions(+), 182 deletions(-) create mode 100644 src/Semi.Avalonia/Converters/ItemConverter.cs delete mode 100644 src/Semi.Avalonia/Converters/ItemToObjectConverter.cs diff --git a/demo/Semi.Avalonia.Demo/Pages/CarouselDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/CarouselDemo.axaml index 6b419c0..d295307 100644 --- a/demo/Semi.Avalonia.Demo/Pages/CarouselDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/CarouselDemo.axaml @@ -8,20 +8,26 @@ d:DesignWidth="800" mc:Ignorable="d"> - - - - - - + @@ -35,39 +41,39 @@ - - - - - - + + + + + + + + - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + - + \ No newline at end of file diff --git a/src/Semi.Avalonia/Controls/Carousel.axaml b/src/Semi.Avalonia/Controls/Carousel.axaml index 1f17eec..cf805c3 100644 --- a/src/Semi.Avalonia/Controls/Carousel.axaml +++ b/src/Semi.Avalonia/Controls/Carousel.axaml @@ -1,10 +1,66 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -13,6 +69,7 @@ Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" + BringIntoViewOnFocusChange="True" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"> - - + + - - - - - + - - - - - - - + + - - - - - - + - - - - - - + + + + - - - - - - - - - - - - - + + + + + + + - - - + + + - - - + - + + + @@ -167,16 +192,15 @@ + ItemsSource="{TemplateBinding ItemCount, Converter={x:Static converter:ItemConverter.ItemToObjectConverter}}" + IsVisible="{TemplateBinding ItemCount, Converter={x:Static converter:ItemConverter.ItemVisibleConverter}}" + SelectedIndex="{TemplateBinding SelectedIndex, Mode=TwoWay}"> @@ -187,30 +211,31 @@ Grid.Row="0" Grid.RowSpan="2" Grid.Column="0" + Theme="{DynamicResource CarouselButton}" Margin="{DynamicResource CarouselButtonMargin}" - VerticalAlignment="Center" - Background="{DynamicResource CarouselButtonPointeroverForeground}" - BorderBrush="{DynamicResource CarouselButtonPressedForeground}" - Command="{Binding $parent[Carousel].Previous}" Foreground="{DynamicResource CarouselButtonForeground}" - Theme="{DynamicResource CarouselButton}" /> + IsVisible="{TemplateBinding ItemCount, Converter={x:Static converter:ItemConverter.ItemVisibleConverter}}" + Command="{Binding $parent[Carousel].Previous}" />