ButtonSpinnerPage.xaml.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System;
  2. using Avalonia;
  3. using Avalonia.Controls;
  4. using Avalonia.Interactivity;
  5. using Avalonia.Markup.Xaml;
  6. namespace ControlCatalog.Pages
  7. {
  8. public class ButtonSpinnerPage : UserControl
  9. {
  10. public ButtonSpinnerPage()
  11. {
  12. this.InitializeComponent();
  13. }
  14. private void InitializeComponent()
  15. {
  16. AvaloniaXamlLoader.Load(this);
  17. }
  18. public void OnSpin(object sender, SpinEventArgs e)
  19. {
  20. var spinner = (ButtonSpinner)sender;
  21. var txtBox = (TextBlock)spinner.Content;
  22. int value = Array.IndexOf(_mountains, txtBox?.Text);
  23. if (e.Direction == SpinDirection.Increase)
  24. value++;
  25. else
  26. value--;
  27. if (value < 0)
  28. value = _mountains.Length - 1;
  29. else if (value >= _mountains.Length)
  30. value = 0;
  31. txtBox.Text = _mountains[value];
  32. }
  33. private readonly string[] _mountains = new[]
  34. {
  35. "Everest",
  36. "K2 (Mount Godwin Austen)",
  37. "Kangchenjunga",
  38. "Lhotse",
  39. "Makalu",
  40. "Cho Oyu",
  41. "Dhaulagiri",
  42. "Manaslu",
  43. "Nanga Parbat",
  44. "Annapurna"
  45. };
  46. }
  47. }