TabControlPage.xaml.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using System;
  2. using Avalonia;
  3. using Avalonia.Controls;
  4. using Avalonia.Markup.Xaml;
  5. using Avalonia.Media.Imaging;
  6. using Avalonia.Platform;
  7. using MiniMvvm;
  8. namespace ControlCatalog.Pages
  9. {
  10. using System.Collections.Generic;
  11. public class TabControlPage : UserControl
  12. {
  13. private static IBitmap LoadBitmap(string uri)
  14. {
  15. var assets = AvaloniaLocator.Current!.GetService<IAssetLoader>()!;
  16. return new Bitmap(assets.Open(new Uri(uri)));
  17. }
  18. public TabControlPage()
  19. {
  20. InitializeComponent();
  21. DataContext = new PageViewModel
  22. {
  23. Tabs = new[]
  24. {
  25. new TabItemViewModel
  26. {
  27. Header = "Arch",
  28. Text = "This is the first templated tab page.",
  29. Image = TabControlPage.LoadBitmap("avares://ControlCatalog/Assets/delicate-arch-896885_640.jpg"),
  30. },
  31. new TabItemViewModel
  32. {
  33. Header = "Leaf",
  34. Text = "This is the second templated tab page.",
  35. Image = TabControlPage.LoadBitmap("avares://ControlCatalog/Assets/maple-leaf-888807_640.jpg"),
  36. },
  37. new TabItemViewModel
  38. {
  39. Header = "Disabled",
  40. Text = "You should not see this.",
  41. IsEnabled = false,
  42. },
  43. },
  44. TabPlacement = Dock.Top,
  45. };
  46. }
  47. private void InitializeComponent()
  48. {
  49. AvaloniaXamlLoader.Load(this);
  50. }
  51. private class PageViewModel : ViewModelBase
  52. {
  53. private Dock _tabPlacement;
  54. public TabItemViewModel[]? Tabs { get; set; }
  55. public Dock TabPlacement
  56. {
  57. get { return _tabPlacement; }
  58. set { this.RaiseAndSetIfChanged(ref _tabPlacement, value); }
  59. }
  60. }
  61. private class TabItemViewModel
  62. {
  63. public string? Header { get; set; }
  64. public string? Text { get; set; }
  65. public IBitmap? Image { get; set; }
  66. public bool IsEnabled { get; set; } = true;
  67. }
  68. }
  69. }