| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- using System;
- using System.Threading.Tasks;
- using Avalonia.Animation;
- using Avalonia.Controls;
- using Avalonia.Interactivity;
- namespace ControlCatalog.Pages
- {
- public partial class NavigationPageTransitionsPage : UserControl
- {
- private bool _initialized;
- private int _pageCount;
- public NavigationPageTransitionsPage()
- {
- InitializeComponent();
- Loaded += OnLoaded;
- }
- private async void OnLoaded(object? sender, RoutedEventArgs e)
- {
- if (_initialized)
- {
- UpdateTransition();
- return;
- }
- _initialized = true;
- await DemoNav.PushAsync(NavigationDemoHelper.MakePage("Transitions", "Choose a transition type and push pages.", 0), null);
- UpdateTransition();
- }
- private void OnTransitionChanged(object? sender, SelectionChangedEventArgs e) => UpdateTransition();
- private void OnDurationChanged(object? sender, Avalonia.Controls.Primitives.RangeBaseValueChangedEventArgs e)
- {
- if (DurationLabel == null)
- return;
- DurationLabel.Text = $"{(int)DurationSlider.Value} ms";
- UpdateTransition();
- }
- private async void OnPush(object? sender, RoutedEventArgs e)
- {
- _pageCount++;
- await DemoNav.PushAsync(NavigationDemoHelper.MakePage($"Page {_pageCount}", $"Pushed with {GetTransitionName()}.", _pageCount));
- }
- private async void OnPop(object? sender, RoutedEventArgs e) => await DemoNav.PopAsync();
- private void UpdateTransition()
- {
- if (DemoNav == null)
- return;
- var duration = TimeSpan.FromMilliseconds(DurationSlider.Value);
- DemoNav.PageTransition = TransitionCombo.SelectedIndex switch
- {
- 1 => new PageSlide(duration, PageSlide.SlideAxis.Horizontal),
- 3 => new ParallaxSlideTransition(duration),
- 4 => new CrossFade(duration),
- 5 => new FadeThroughTransition(duration),
- 6 => new PageSlideTransition(duration, PageSlideTransition.SlideAxis.Horizontal),
- 7 => new PageSlideTransition(duration, PageSlideTransition.SlideAxis.Vertical),
- 8 => new CompositeTransition(duration),
- 9 => null,
- _ => new PageSlide(duration, PageSlide.SlideAxis.Horizontal)
- };
- }
- private string GetTransitionName() => TransitionCombo.SelectedIndex switch
- {
- 1 => "Page Slide",
- 3 => "Parallax Slide",
- 4 => "Cross Fade",
- 5 => "Fade Through",
- 6 => "Page Slide (Horizontal)",
- 7 => "Page Slide (Vertical)",
- 8 => "Composite (Slide + Fade)",
- 9 => "no transition",
- _ => "Page Slide"
- };
- }
- }
|