WatermarkContentViewModel.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. using ComPDFKitViewer.PdfViewer;
  2. using PDF_Office.EventAggregators;
  3. using PDF_Office.Model;
  4. using Prism.Commands;
  5. using Prism.Events;
  6. using Prism.Mvvm;
  7. using Prism.Regions;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Windows;
  12. namespace PDF_Office.ViewModels.EditTools.Watermark
  13. {
  14. public class WatermarkContentViewModel : BindableBase,INavigationAware
  15. {
  16. public IEventAggregator eventAggregator;
  17. public IRegionManager watermarkRegion;
  18. public string TemplateListName = "WatermarkTemplateListBaseContent";
  19. public string CreateName = "WatermarkCreateBaseContent";
  20. public string CreateModTextName = "WatermarkCreateTextContent";
  21. public string CreateModFileName = "WatermarkCreateFileContent";
  22. public string WatermarkDocumentName = "WatermarkDocumentContent";
  23. private string _watermarkSettingsRegionName;
  24. public string WatermarkSettingsRegionName
  25. {
  26. get { return _watermarkSettingsRegionName; }
  27. set { _watermarkSettingsRegionName = value; }
  28. }
  29. private Visibility _watermarkSettingsVisible = Visibility.Collapsed;
  30. public Visibility WatermarkSettingsVisible
  31. {
  32. get { return _watermarkSettingsVisible; }
  33. set { _watermarkSettingsVisible = value; }
  34. }
  35. private string _watermarkDocumentRegionName;
  36. /// <summary>
  37. /// 持有Document的Region,负责渲染和保存
  38. /// </summary>
  39. public string WatermarkDocumentRegionName
  40. {
  41. get { return _watermarkDocumentRegionName; }
  42. set { _watermarkDocumentRegionName = value; }
  43. }
  44. private Visibility _watermarkDocumentVisible = Visibility.Visible;
  45. /// <summary>
  46. /// 持有Document的Region可见
  47. /// </summary>
  48. public Visibility WatermarkDocumentVisible
  49. {
  50. get { return _watermarkDocumentVisible; }
  51. set { _watermarkDocumentVisible = value; }
  52. }
  53. private EnumTextOrFile _currentCreateMod;
  54. public EnumTextOrFile CurrentCreateMod
  55. {
  56. get { return _currentCreateMod; }
  57. set { _currentCreateMod = value; }
  58. }
  59. public DelegateCommand CloseEditToolCommand { get; set; }
  60. public DelegateCommand ConfirmEditToolCommand { get; set; }
  61. public DelegateCommand<string> EnterSelectedContentCommand { get; set; }
  62. public WatermarkContentViewModel(IRegionManager regionManager, IEventAggregator eventAggregator)
  63. {
  64. this.eventAggregator = eventAggregator;
  65. this.watermarkRegion = regionManager;
  66. WatermarkSettingsVisible = Visibility.Visible;
  67. WatermarkSettingsRegionName = Guid.NewGuid().ToString();
  68. WatermarkDocumentRegionName = Guid.NewGuid().ToString();
  69. CloseEditToolCommand = new DelegateCommand(CloseEditTool);
  70. ConfirmEditToolCommand = new DelegateCommand(ConfirmEditTool);
  71. EnterSelectedContentCommand = new DelegateCommand<string>(EnterSelectedContent);
  72. eventAggregator.GetEvent<EnterTemplateListOrCreateEvent>().Subscribe(EnterTemplateListOrCreate);
  73. eventAggregator.GetEvent<SetCurrentCreateModEvent>().Subscribe(SetCurrentCreateMod);
  74. }
  75. public void CloseEditTool()
  76. {
  77. this.eventAggregator.GetEvent<CloseEditToolEvent>().Publish();
  78. }
  79. public void ConfirmEditTool()
  80. {
  81. this.eventAggregator.GetEvent<ConfirmEditToolsWatermarkEvent>().Publish(CurrentCreateMod);
  82. }
  83. public void EnterTemplateListOrCreate(EnumTemplateListOrCreate enumTemplateListOrCreate)
  84. {
  85. if (enumTemplateListOrCreate == EnumTemplateListOrCreate.StatusTemplate)
  86. {
  87. EnterSelectedContent(TemplateListName);
  88. }
  89. else
  90. {
  91. EnterSelectedContent(CreateName);
  92. }
  93. }
  94. public void SetCurrentCreateMod(string currentCreateModName)
  95. {
  96. if (currentCreateModName == CreateModTextName)
  97. {
  98. CurrentCreateMod = EnumTextOrFile.StatusText;
  99. }
  100. else if (currentCreateModName == CreateModFileName)
  101. {
  102. CurrentCreateMod = EnumTextOrFile.StatusFile;
  103. }
  104. }
  105. public void EnterSelectedContent(string SelectedContentName)
  106. {
  107. watermarkRegion.RequestNavigate(WatermarkSettingsRegionName, SelectedContentName);
  108. WatermarkSettingsVisible = Visibility.Visible;
  109. }
  110. public void EnterDocumentContent()
  111. {
  112. watermarkRegion.RequestNavigate(WatermarkDocumentRegionName, WatermarkDocumentName);
  113. WatermarkDocumentVisible = Visibility.Visible;
  114. }
  115. public void OnNavigatedTo(NavigationContext navigationContext)
  116. {
  117. EnterSelectedContent(TemplateListName);
  118. EnterDocumentContent();
  119. }
  120. public bool IsNavigationTarget(NavigationContext navigationContext)
  121. {
  122. return true;
  123. }
  124. public void OnNavigatedFrom(NavigationContext navigationContext)
  125. {
  126. }
  127. }
  128. }