ButtonSpinnerPage.xaml.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. if (spinner.Content is TextBlock txtBox)
  22. {
  23. int value = Array.IndexOf(_mountains, txtBox.Text);
  24. if (e.Direction == SpinDirection.Increase)
  25. value++;
  26. else
  27. value--;
  28. if (value < 0)
  29. value = _mountains.Length - 1;
  30. else if (value >= _mountains.Length)
  31. value = 0;
  32. txtBox.Text = _mountains[value];
  33. }
  34. }
  35. private readonly string[] _mountains = new[]
  36. {
  37. "Everest",
  38. "K2 (Mount Godwin Austen)",
  39. "Kangchenjunga",
  40. "Lhotse",
  41. "Makalu",
  42. "Cho Oyu",
  43. "Dhaulagiri",
  44. "Manaslu",
  45. "Nanga Parbat",
  46. "Annapurna"
  47. };
  48. }
  49. }