MainWindowViewModel.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. using Microsoft.Win32;
  2. using PDF_Office.CustomControl;
  3. using PDF_Office.EventAggregators;
  4. using PDF_Office.Views;
  5. using Prism.Commands;
  6. using Prism.Events;
  7. using Prism.Mvvm;
  8. using Prism.Regions;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Collections.ObjectModel;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. using System.Windows.Controls;
  16. using ComPDFKitViewer.PdfViewer;
  17. using Dragablz;
  18. using System.Windows;
  19. using Prism.Ioc;
  20. namespace PDF_Office.ViewModels
  21. {
  22. public class MainWindowViewModel : BindableBase
  23. {
  24. /// <summary>
  25. /// 当前选中项
  26. /// </summary>
  27. //public MainContent SelectedItem { get; set; }
  28. private MainContent selectedItem;
  29. public MainContent SelectedItem
  30. {
  31. get { return selectedItem; }
  32. set {
  33. SetProperty(ref selectedItem, value);
  34. if (SelectedItem!=null)
  35. {
  36. var pdfviewer = (SelectedItem.DataContext as MainContentViewModel).PDFViewer;
  37. if(pdfviewer!=null)
  38. {
  39. CurrentPDFViewer = pdfviewer;
  40. }
  41. }
  42. }
  43. }
  44. private CPDFViewer pdfViewer;
  45. /// <summary>
  46. /// 当前页签的PdfViewer对象
  47. /// </summary>
  48. public CPDFViewer CurrentPDFViewer
  49. {
  50. get { return pdfViewer; }
  51. set { pdfViewer = value; }
  52. }
  53. public DelegateCommand AddTab { get; set; }
  54. public IRegionManager region;
  55. public IEventAggregator eventer;
  56. private IContainerProvider containerProvider;
  57. public IInterTabClient InterTabClient { get; }
  58. public MainWindowViewModel(IRegionManager regionManager, IEventAggregator eventAggregator, IContainerProvider container)
  59. {
  60. App.mainWindowViewModel = this;
  61. region = regionManager;
  62. eventer = eventAggregator;
  63. containerProvider = container;
  64. InterTabClient = new InterTabClient(container);
  65. AddTab = new DelegateCommand(AddTabItem);
  66. //第一次打开时需要自动加载Home页
  67. if (App.IsFirstOpen)
  68. {
  69. System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
  70. {
  71. region.RequestNavigate(RegionNames.MainRegion, "MainContent");
  72. }
  73. ));
  74. App.IsFirstOpen = false;
  75. }
  76. }
  77. /// <summary>
  78. /// 单击+号时添加页签
  79. /// </summary>
  80. private void AddTabItem()
  81. {
  82. NavigationParameters parameters = new NavigationParameters
  83. {
  84. { "AddTab",true}
  85. };
  86. region.RequestNavigate(RegionNames.MainRegion, "MainContent", parameters);
  87. }
  88. /// <summary>
  89. /// 选择多文档打开时
  90. /// </summary>
  91. /// <param name="filePath"></param>
  92. public void AddTabItem(string filePath)
  93. {
  94. NavigationParameters parameters = new NavigationParameters
  95. {
  96. { "filePath", filePath },
  97. { "AddTab",true}
  98. };
  99. region.RequestNavigate(RegionNames.MainRegion, "MainContent", parameters);
  100. }
  101. public void CloseTabItem(object item)
  102. {
  103. if (region.Regions[RegionNames.MainRegion].Views.Count() > 1)
  104. {
  105. region.Regions[RegionNames.MainRegion].Remove(item);
  106. }
  107. else
  108. {
  109. App.Current.MainWindow.Close();
  110. }
  111. return;
  112. }
  113. public void SelectItem(string filepath)
  114. {
  115. var item = region.Regions[RegionNames.MainRegion].Views.Where(t => ((t as MainContent).DataContext as MainContentViewModel).FilePath == filepath).FirstOrDefault() as MainContent;
  116. region.Regions[RegionNames.MainRegion].Activate(item);
  117. var behavior = region.Regions[RegionNames.MainRegion].Behaviors[DragablzWindowBehavior.BehaviorKey] as DragablzWindowBehavior;
  118. if(behavior!=null)
  119. {
  120. behavior.ActivateView(item);
  121. }
  122. }
  123. }
  124. }