HomeContentViewModel.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. using Microsoft.Win32;
  2. using PDF_Office.EventAggregators;
  3. using PDF_Office.Helper;
  4. using PDF_Office.Model;
  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.Diagnostics;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. using System.Windows;
  16. namespace PDF_Office.ViewModels
  17. {
  18. public class HomeContentViewModel : BindableBase, INavigationAware
  19. {
  20. private string fileName = "Home";
  21. public string FileName
  22. {
  23. get { return fileName; }
  24. set { SetProperty(ref fileName, value); }
  25. }
  26. private string regionName;
  27. public string ToolRegionName
  28. {
  29. get { return regionName; }
  30. set { SetProperty(ref regionName, value); }
  31. }
  32. private Visibility isLoading = Visibility.Collapsed;
  33. public Visibility IsLoading
  34. {
  35. get { return isLoading; }
  36. set
  37. {
  38. SetProperty(ref isLoading, value);
  39. }
  40. }
  41. private MainContentViewModel mainContentViewModel;
  42. public DelegateCommand OpenFileCommand { get; set; }
  43. public DelegateCommand<string> ShowToolCommand { get; set; }
  44. public IRegionManager toolregion;
  45. public IEventAggregator eventer;
  46. public HomeContentViewModel(IRegionManager regionManager, IEventAggregator eventAggregator)
  47. {
  48. toolregion = regionManager;
  49. eventer = eventAggregator;
  50. ToolRegionName = Guid.NewGuid().ToString();
  51. OpenFileCommand = new DelegateCommand(OpenFile);
  52. ShowToolCommand = new DelegateCommand<string>(ShowToolContent);
  53. System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
  54. {
  55. toolregion.RequestNavigate(ToolRegionName, "Guid");
  56. }));
  57. }
  58. /// <summary>
  59. /// 显示右侧不同的工具栏页面
  60. /// </summary>
  61. /// <param name="view"></param>
  62. public void ShowToolContent(string view)
  63. {
  64. toolregion.RequestNavigate(ToolRegionName, view);
  65. }
  66. /// <summary>
  67. /// 打开文件
  68. /// </summary>
  69. public async void OpenFile()
  70. {
  71. OpenFileDialog openFileDialog = new OpenFileDialog();
  72. openFileDialog.Filter = Properties.Resources.OpenDialogFilter;
  73. openFileDialog.Multiselect = true;
  74. if ((bool)openFileDialog.ShowDialog())
  75. {
  76. IsLoading = Visibility.Visible;
  77. await Task.Delay(3);
  78. if (openFileDialog.FileNames.Count() == 1)
  79. {
  80. if (App.OpenedFileList.Contains(openFileDialog.FileName))
  81. {
  82. App.mainWindowViewModel.SelectItem(openFileDialog.FileName);
  83. }
  84. else
  85. {
  86. mainContentViewModel.OpenFile(openFileDialog.FileName);
  87. }
  88. ToolMethod.SetFileThumbImg(openFileDialog.FileName);
  89. }
  90. else
  91. {
  92. var fileList = openFileDialog.FileNames.ToList().Where(x => !App.OpenedFileList.Exists(y => y == x)).ToList();
  93. if (fileList.Count <= 0)
  94. return;
  95. mainContentViewModel.OpenFile(fileList[0]);
  96. for (int i = 1; i < fileList.Count(); i++)
  97. {
  98. if (!App.OpenedFileList.Contains(fileList[i]))
  99. {
  100. App.mainWindowViewModel.AddTabItem(fileList[i]);
  101. }
  102. ToolMethod.SetFileThumbImg(fileList[i]);
  103. }
  104. }
  105. IsLoading = Visibility.Collapsed;
  106. }
  107. }
  108. public void CreatBlankPDF()
  109. {
  110. }
  111. #region Navigate
  112. public void OnNavigatedTo(NavigationContext navigationContext)
  113. {
  114. var mainVM = navigationContext.Parameters[ParameterNames.MainViewModel] as MainContentViewModel;
  115. if (mainVM != null)
  116. {
  117. mainContentViewModel = mainVM;
  118. }
  119. }
  120. public bool IsNavigationTarget(NavigationContext navigationContext)
  121. {
  122. return true;
  123. }
  124. public void OnNavigatedFrom(NavigationContext navigationContext)
  125. {
  126. }
  127. #endregion
  128. }
  129. }