| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- using System;
- using System.Collections;
- using Avalonia.Animation;
- using Avalonia.Controls;
- using Avalonia.Interactivity;
- namespace ControlCatalog.Pages
- {
- public partial class CarouselPageCustomizationPage : UserControl
- {
- public CarouselPageCustomizationPage()
- {
- InitializeComponent();
- Loaded += OnLoaded;
- Unloaded += OnUnloaded;
- }
- private void OnLoaded(object? sender, RoutedEventArgs e)
- {
- DemoCarousel.PageTransition = new PageSlide(TimeSpan.FromMilliseconds(300), PageSlide.SlideAxis.Horizontal);
- DemoCarousel.SelectionChanged += OnSelectionChanged;
- UpdateDots(DemoCarousel.SelectedIndex);
- UpdateStatus();
- }
- private void OnUnloaded(object? sender, RoutedEventArgs e)
- {
- DemoCarousel.SelectionChanged -= OnSelectionChanged;
- }
- private void OnSelectionChanged(object? sender, PageSelectionChangedEventArgs e)
- {
- UpdateDots(DemoCarousel.SelectedIndex);
- UpdateStatus();
- }
- private void OnOrientationChanged(object? sender, SelectionChangedEventArgs e)
- {
- if (DemoCarousel == null)
- return;
- var axis = OrientationCombo.SelectedIndex == 1
- ? PageSlide.SlideAxis.Vertical
- : PageSlide.SlideAxis.Horizontal;
- DemoCarousel.PageTransition = new PageSlide(TimeSpan.FromMilliseconds(300), axis);
- UpdateStatus();
- }
- private void OnPrevious(object? sender, RoutedEventArgs e)
- {
- if (DemoCarousel.SelectedIndex > 0)
- DemoCarousel.SelectedIndex--;
- }
- private void OnNext(object? sender, RoutedEventArgs e)
- {
- var pageCount = (DemoCarousel.Pages as IList)?.Count ?? 0;
- if (DemoCarousel.SelectedIndex < pageCount - 1)
- DemoCarousel.SelectedIndex++;
- }
- private void UpdateDots(int selectedIndex)
- {
- Dot0.Opacity = selectedIndex == 0 ? 1.0 : 0.4;
- Dot1.Opacity = selectedIndex == 1 ? 1.0 : 0.4;
- Dot2.Opacity = selectedIndex == 2 ? 1.0 : 0.4;
- Dot3.Opacity = selectedIndex == 3 ? 1.0 : 0.4;
- }
- private void UpdateStatus()
- {
- if (StatusText == null) return;
- var pageCount = (DemoCarousel.Pages as IList)?.Count ?? 0;
- var axis = OrientationCombo?.SelectedIndex == 1 ? "Vertical" : "Horizontal";
- StatusText.Text = $"Page {DemoCarousel.SelectedIndex + 1} of {pageCount} | {axis}";
- }
- }
- }
|