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}" />
+ IsVisible="{TemplateBinding ItemCount, Converter={x:Static converter:ItemConverter.ItemVisibleConverter}}"
+ Command="{Binding $parent[Carousel].Next}"
+ RenderTransform="rotate(180deg)" />