ViewContent.xaml.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. using ComPDFKitViewer;
  2. using ComPDFKitViewer.PdfViewer;
  3. using PDF_Office.EventAggregators;
  4. using PDF_Office.Model;
  5. using PDF_Office.ViewModels;
  6. using PDF_Office.ViewModels.Tools;
  7. using PDF_Office.Views.Dialog;
  8. using PDF_Office.Views.PropertyPanel.ViewModular;
  9. using PDF_Office.Views.Tools;
  10. using Prism.Events;
  11. using Prism.Regions;
  12. using System;
  13. using System.Threading;
  14. using System.Threading.Tasks;
  15. using System.Windows;
  16. using System.Windows.Controls;
  17. using System.Windows.Input;
  18. using System.Windows.Media;
  19. using System.Windows.Threading;
  20. namespace PDF_Office.Views
  21. {
  22. /// <summary>
  23. /// Interaction logic for ViewContent
  24. /// </summary>
  25. public partial class ViewContent : UserControl
  26. {
  27. private ViewContentViewModel viewModel = null;
  28. private string unicode = "";
  29. public ViewContent()
  30. {
  31. InitializeComponent();
  32. unicode = App.mainWindowViewModel.SelectedItem.Unicode;
  33. viewModel = (ViewContentViewModel)this.DataContext;
  34. viewModel.PropertyChanged += ViewModel_PropertyChanged;
  35. }
  36. private void ViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
  37. {
  38. if(e.PropertyName == "OpenBOTA")
  39. {
  40. if(!viewModel.OpenBOTA)
  41. {
  42. //动态改变BOTA的最小宽度只能在这里设置,VM里绑定会有异常
  43. BOTACloumn.MinWidth = 48;
  44. viewModel.BOTAWidth = new GridLength(48);
  45. BOTASplitter.Visibility = Visibility.Collapsed;
  46. }
  47. else
  48. {
  49. BOTACloumn.MinWidth = 260;
  50. BOTASplitter.Visibility = Visibility.Visible;
  51. }
  52. }
  53. }
  54. public ViewContent(IEventAggregator eventAggregator) : this()
  55. {
  56. eventAggregator.GetEvent<SplitEvent>().Subscribe(ChangeSplitModeUI, e => e.Unicode == unicode);
  57. }
  58. /// <summary>
  59. /// 根据Vm事件通知处理分屏布局的事件
  60. /// </summary>
  61. /// <param name="e"></param>
  62. private void ChangeSplitModeUI(SplitEventArgs e)
  63. {
  64. switch (e.Mode)
  65. {
  66. case EventAggregators.SplitMode.Horizontal:
  67. //水平分屏 上下
  68. HorizontalSplitter.Visibility = Visibility.Visible;
  69. VerticalSplitter.Visibility = Visibility.Collapsed;
  70. RowRight.Height = new GridLength(1, GridUnitType.Star);
  71. ColumnBottom.Width = new GridLength(0);
  72. Grid.SetColumn(SplitPDFViewer, 0);
  73. Grid.SetRow(SplitPDFViewer, 2);
  74. break;
  75. case EventAggregators.SplitMode.Vertical:
  76. HorizontalSplitter.Visibility = Visibility.Collapsed;
  77. VerticalSplitter.Visibility = Visibility.Visible;
  78. RowRight.Height = new GridLength(0);
  79. ColumnBottom.Width = new GridLength(1, GridUnitType.Star);
  80. Grid.SetColumn(SplitPDFViewer, 2);
  81. Grid.SetRow(SplitPDFViewer, 0);
  82. break;
  83. case EventAggregators.SplitMode.Single:
  84. default:
  85. //退出分屏模式
  86. HorizontalSplitter.Visibility = Visibility.Collapsed;
  87. VerticalSplitter.Visibility = Visibility.Collapsed;
  88. RowRight.Height = new GridLength(0, GridUnitType.Star);
  89. ColumnBottom.Width = new GridLength(0, GridUnitType.Star);
  90. break;
  91. }
  92. GridViewer.UpdateLayout();
  93. }
  94. /// <summary>
  95. /// 退出阅读模式
  96. /// </summary>
  97. /// <param name="sender"></param>
  98. /// <param name="e"></param>
  99. private void UserControl_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
  100. {
  101. if (Key.Escape == e.Key)
  102. {
  103. if (viewModel != null)
  104. {
  105. if (viewModel.PDFViewer.MouseMode != MouseModes.PanTool)
  106. {
  107. if (this.ContentToolsBar.Content is AnnotToolContent annotTool)
  108. {
  109. if (annotTool.BtnSelecttool.IsChecked == true)
  110. {
  111. AnnotToolContentViewModel model = (AnnotToolContentViewModel)annotTool.DataContext;
  112. if (model != null)
  113. {
  114. if (model.SnapshotEditMenuViewModel.SnapToolArgs != null)
  115. {
  116. model.SnapshotEditMenuViewModel.SnapToolArgs.ReSnapshot();
  117. }
  118. }
  119. }
  120. }
  121. if (App.IsBookMode == true)
  122. {
  123. viewModel.UnReadModel();
  124. }
  125. }
  126. else
  127. {
  128. viewModel.UnReadModel();
  129. }
  130. }
  131. }
  132. }
  133. private void BtnFile_Initialized(object sender, EventArgs e)
  134. {
  135. BtnFile.ContextMenu = null;
  136. }
  137. private void BtnFile_Click(object sender, RoutedEventArgs e)
  138. {
  139. FileMenu.PlacementTarget = BtnFile;
  140. FileMenu.Placement = System.Windows.Controls.Primitives.PlacementMode.Bottom;
  141. FileMenu.IsOpen = true;
  142. }
  143. private void ContentControl_SizeChanged(object sender, SizeChangedEventArgs e)
  144. {
  145. }
  146. }
  147. }