1
0

ContextPageViewModel.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System.Collections.Generic;
  2. using System.Reactive;
  3. using System.Threading.Tasks;
  4. using Avalonia.Controls;
  5. using Avalonia.VisualTree;
  6. using MiniMvvm;
  7. namespace ControlCatalog.ViewModels
  8. {
  9. public class ContextPageViewModel
  10. {
  11. public Control? View { get; set; }
  12. public ContextPageViewModel()
  13. {
  14. OpenCommand = MiniCommand.CreateFromTask(Open);
  15. SaveCommand = MiniCommand.Create(Save);
  16. OpenRecentCommand = MiniCommand.Create<string>(OpenRecent);
  17. MenuItems = new[]
  18. {
  19. new MenuItemViewModel { Header = "_Open...", Command = OpenCommand },
  20. new MenuItemViewModel { Header = "Save", Command = SaveCommand },
  21. new MenuItemViewModel { Header = "-" },
  22. new MenuItemViewModel
  23. {
  24. Header = "Recent",
  25. Items = new[]
  26. {
  27. new MenuItemViewModel
  28. {
  29. Header = "File1.txt",
  30. Command = OpenRecentCommand,
  31. CommandParameter = @"c:\foo\File1.txt"
  32. },
  33. new MenuItemViewModel
  34. {
  35. Header = "File2.txt",
  36. Command = OpenRecentCommand,
  37. CommandParameter = @"c:\foo\File2.txt"
  38. },
  39. }
  40. },
  41. };
  42. }
  43. public IReadOnlyList<MenuItemViewModel> MenuItems { get; set; }
  44. public MiniCommand OpenCommand { get; }
  45. public MiniCommand SaveCommand { get; }
  46. public MiniCommand OpenRecentCommand { get; }
  47. public async Task Open()
  48. {
  49. var window = View?.GetVisualRoot() as Window;
  50. if (window == null)
  51. return;
  52. var result = await window.StorageProvider.OpenFilePickerAsync(new Avalonia.Platform.Storage.FilePickerOpenOptions() { AllowMultiple = true });
  53. foreach (var file in result)
  54. {
  55. System.Diagnostics.Debug.WriteLine($"Opened: {file.Name}");
  56. }
  57. }
  58. public void Save()
  59. {
  60. System.Diagnostics.Debug.WriteLine("Save");
  61. }
  62. public void OpenRecent(string path)
  63. {
  64. System.Diagnostics.Debug.WriteLine($"Open recent: {path}");
  65. }
  66. }
  67. }