ManualWindowViewModel.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using System;
  2. using Prism.Mvvm;
  3. using System.Linq;
  4. using Prism.Regions;
  5. using Prism.Commands;
  6. using System.Windows.Controls;
  7. using System.Collections.Generic;
  8. using SHJX.Service.Common.Constants;
  9. using SHJX.Service.Common.Interface;
  10. using SHJX.Service.Control.Interface;
  11. using System.Collections.ObjectModel;
  12. namespace SHJX.Service.Shell.ViewModels.Manual
  13. {
  14. public class ManualWindowViewModel : BindableBase
  15. {
  16. #region Fields
  17. private IRegion _region;
  18. private readonly ILogService _log;
  19. private readonly IManualService _service;
  20. private readonly IRegionManager _regionManager;
  21. private Dictionary<string, string> _items;
  22. #endregion
  23. #region Properties
  24. public ObservableCollection<TabItem> TabItemInfos { get; init; }
  25. #endregion
  26. public ManualWindowViewModel(IRegionManager regionManager, ILogService log, IManualService service)
  27. {
  28. _regionManager = regionManager;
  29. _log = log;
  30. _service = service;
  31. TabItemInfos ??= new ObservableCollection<TabItem>();
  32. InitDataAndBind();
  33. }
  34. #region Command
  35. private DelegateCommand _loginLoadingCommand;
  36. public DelegateCommand LoginLoadingCommand => _loginLoadingCommand ??= new DelegateCommand(ExecuteLoginLoadingCommand);
  37. private DelegateCommand<string> _menuSelectionChangedCommand;
  38. public DelegateCommand<string> MenuSelectionChangedCommand => _menuSelectionChangedCommand ??= new DelegateCommand<string>(ExecuteMenuSelectionChangedCommand);
  39. private DelegateCommand _closingCommand;
  40. public DelegateCommand ClosingCommand => _closingCommand ??= new DelegateCommand(() =>
  41. {
  42. _regionManager.Regions.Remove(RegionNames.ManualRegion);//关闭窗体之前先移除注册项
  43. });
  44. #endregion
  45. #region Execute
  46. void ExecuteLoginLoadingCommand()
  47. {
  48. try
  49. {
  50. _region = _regionManager.Regions[RegionNames.ManualRegion];
  51. _region.RequestNavigate(_items.FirstOrDefault().Value);
  52. }
  53. catch (Exception ex)
  54. {
  55. _log.ErrorFormat(ex.ToString());
  56. }
  57. }
  58. public void ExecuteMenuSelectionChangedCommand(string elementName)
  59. {
  60. try
  61. {
  62. if (_items.TryGetValue(elementName, out var value))
  63. {
  64. _region.RequestNavigate(value);
  65. }
  66. }
  67. catch (Exception ex)
  68. {
  69. _log.ErrorFormat(ex.ToString());
  70. }
  71. }
  72. #endregion
  73. #region Method
  74. private void InitDataAndBind()
  75. {
  76. _items = _service.ManualTabItems;
  77. foreach (string item in _items.Keys)
  78. {
  79. TabItem tab = new()
  80. {
  81. Header = item
  82. };
  83. TabItemInfos.Add(tab);
  84. }
  85. }
  86. #endregion
  87. }
  88. }