MainWindow.xaml.cs 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. using compdfkit_tools.PDFControl;
  2. using compdfkit_tools.PDFControlUI;
  3. using ComPDFKitViewer.PdfViewer;
  4. using System.Windows;
  5. using System.Windows.Controls;
  6. using System.Windows.Controls.Primitives;
  7. namespace viewer_ctrl_demo
  8. {
  9. /// <summary>
  10. /// Interaction logic for MainWindow.xaml
  11. /// </summary>
  12. public partial class MainWindow : Window
  13. {
  14. private CPDFViewer pdfViewer;
  15. public MainWindow()
  16. {
  17. InitializeComponent();
  18. TitleBarControl.Loaded += TitleBarControl_Loaded;
  19. LoadDefaultDocument();
  20. }
  21. private void LoadDocument()
  22. {
  23. pdfViewer.Load();
  24. PDFGrid.Child = pdfViewer;
  25. CPDFScalingControl.InitWithPDFViewer(pdfViewer);
  26. CPDFPageTurningControl.InitWithPDFViewer(pdfViewer);
  27. CPDFViewModeControl.InitWithPDFViewer(pdfViewer);
  28. CPDFDrawModeControl.InitWithPDFViewer(pdfViewer);
  29. UIElement currentBotaTool = GetBotaTool();
  30. if (currentBotaTool is CPDFSearchControl)
  31. {
  32. ((CPDFSearchControl)currentBotaTool).InitWithPDFViewer(pdfViewer);
  33. }
  34. if (currentBotaTool is CPDFThumbnailControl)
  35. {
  36. ((CPDFThumbnailControl)currentBotaTool).InitWithPDFViewer(pdfViewer);
  37. ((CPDFThumbnailControl)currentBotaTool).ThumbLoaded = false;
  38. ((CPDFThumbnailControl)currentBotaTool).LoadThumb();
  39. }
  40. if (currentBotaTool is CPDFBookmarkControl)
  41. {
  42. ((CPDFBookmarkControl)currentBotaTool).InitWithPDFViewer(pdfViewer);
  43. ((CPDFBookmarkControl)currentBotaTool).LoadBookmark();
  44. }
  45. }
  46. private void LoadDefaultDocument()
  47. {
  48. string defaultFilePath = "..\\..\\..\\..\\developer_guide_windows.pdf";
  49. pdfViewer = new CPDFViewer();
  50. pdfViewer.InitDocument(defaultFilePath);
  51. LoadDocument();
  52. }
  53. private void TitleBarControl_Loaded(object sender, RoutedEventArgs e)
  54. {
  55. TitleBarControl.OpenFileEvent += TitleBarControl_OpenFileEvent;
  56. }
  57. private void TitleBarControl_OpenFileEvent(object sender, CPDFViewer e)
  58. {
  59. this.pdfViewer = TitleBarControl.pdfViewer;
  60. LoadDocument();
  61. }
  62. /// <summary>
  63. /// 搜索工具点击处理
  64. /// </summary>
  65. private void SearchToolButton_Click(object sender, RoutedEventArgs e)
  66. {
  67. UIElement botaTool = GetBotaTool();
  68. if (botaTool == null || !(botaTool is CPDFSearchControl))
  69. {
  70. CPDFSearchControl searchControl = new CPDFSearchControl();
  71. if (pdfViewer != null && pdfViewer.Document != null)
  72. {
  73. searchControl.InitWithPDFViewer(pdfViewer);
  74. }
  75. SetBotaTool(searchControl);
  76. }
  77. ExpandTool(SearchToolButton.IsChecked == true);
  78. ClearToolState(SearchToolButton);
  79. }
  80. /// <summary>
  81. /// 缩略图列表点击处理
  82. /// </summary>
  83. private void ThumbToolButton_Click(object sender, RoutedEventArgs e)
  84. {
  85. UIElement botaTool = GetBotaTool();
  86. if (botaTool == null || !(botaTool is CPDFThumbnailControl))
  87. {
  88. CPDFThumbnailControl thumbControl = new CPDFThumbnailControl();
  89. if (pdfViewer != null && pdfViewer.Document != null)
  90. {
  91. thumbControl.InitWithPDFViewer(pdfViewer);
  92. thumbControl.LoadThumb();
  93. }
  94. SetBotaTool(thumbControl);
  95. }
  96. ExpandTool(ThumbToolButton.IsChecked == true);
  97. ClearToolState(ThumbToolButton);
  98. }
  99. /// <summary>
  100. /// 书签列表点击处理
  101. /// </summary>
  102. private void BookmarkToolButtonn_Click(object sender, RoutedEventArgs e)
  103. {
  104. UIElement botaTool = GetBotaTool();
  105. if (botaTool == null || !(botaTool is CPDFBookmarkControl))
  106. {
  107. CPDFBookmarkControl bookmarkControl = new CPDFBookmarkControl();
  108. if (pdfViewer != null && pdfViewer.Document != null)
  109. {
  110. bookmarkControl.InitWithPDFViewer(pdfViewer);
  111. bookmarkControl.LoadBookmark();
  112. }
  113. SetBotaTool(bookmarkControl);
  114. }
  115. ExpandTool(BookmarkToolButton.IsChecked == true);
  116. ClearToolState(BookmarkToolButton);
  117. }
  118. /// <summary>
  119. /// 大纲列表处理
  120. /// </summary>
  121. private void OutlineToolButton_Click(object sender, RoutedEventArgs e)
  122. {
  123. UIElement botaTool = GetBotaTool();
  124. if (botaTool == null||!(botaTool is CPDFOutlineControl))
  125. {
  126. CPDFOutlineControl outlineControl = new CPDFOutlineControl();
  127. if (pdfViewer != null && pdfViewer.Document != null)
  128. {
  129. outlineControl.InitWithPDFViewer(pdfViewer);
  130. }
  131. SetBotaTool(outlineControl);
  132. }
  133. ExpandTool(OutlineToolButton.IsChecked == true);
  134. ClearToolState(OutlineToolButton);
  135. }
  136. /// <summary>
  137. /// 设置Bota工具内容
  138. /// </summary>
  139. /// <param name="newChild"></param>
  140. private void SetBotaTool(UIElement newChild)
  141. {
  142. BotaToolContainer.Child = newChild;
  143. }
  144. /// <summary>
  145. /// 获取Bota工具
  146. /// </summary>
  147. /// <returns></returns>
  148. private UIElement GetBotaTool()
  149. {
  150. return BotaToolContainer.Child;
  151. }
  152. /// <summary>
  153. /// 展开Bota工具
  154. /// </summary>
  155. /// <param name="isExpand"></param>
  156. private void ExpandTool(bool isExpand)
  157. {
  158. if(isExpand)
  159. {
  160. BodyGrid.ColumnDefinitions[1].Width = new GridLength(300);
  161. }
  162. else
  163. {
  164. BodyGrid.ColumnDefinitions[1].Width = new GridLength(0);
  165. }
  166. BotaToolContainer.Visibility = isExpand ? Visibility.Visible : Visibility.Collapsed;
  167. Splitter.Visibility=isExpand ? Visibility.Visible : Visibility.Collapsed;
  168. }
  169. /// <summary>
  170. /// 清除左边工具栏状态
  171. /// </summary>
  172. private void ClearToolState(UIElement ignoreTool)
  173. {
  174. foreach (UIElement child in BotaSideTool.Children)
  175. {
  176. if (child != ignoreTool && child is ToggleButton buttonTool)
  177. {
  178. buttonTool.IsChecked = false;
  179. }
  180. }
  181. }
  182. private void BotaButton_Click(object sender, RoutedEventArgs e)
  183. {
  184. UIElement botaTool = GetBotaTool();
  185. if (botaTool == null)
  186. {
  187. CPDFBOTABarControl pdfBOTABarControl = new CPDFBOTABarControl(BOTATools.Outline|BOTATools.Thumbnail|BOTATools.Search);
  188. if (pdfViewer != null && pdfViewer.Document != null)
  189. {
  190. pdfBOTABarControl.InitWithPDFViewer(pdfViewer);
  191. }
  192. SetBotaTool(pdfBOTABarControl);
  193. }
  194. ExpandTool(BotaButton.IsChecked == true);
  195. ClearToolState(BotaButton);
  196. }
  197. private void ShowPDFInfoDialog()
  198. {
  199. CPDFInfoControl pdfInfoControl = new CPDFInfoControl();
  200. pdfInfoControl.InitWithPDFViewer(pdfViewer);
  201. Window dialog = new Window
  202. {
  203. Title = "PDF Info", // 设置弹出窗口的标题
  204. Content = pdfInfoControl, // 将UserControl添加到弹出窗口中
  205. Width = 600, // 设置弹出窗口的宽度
  206. Height = 300, // 设置弹出窗口的高度
  207. ResizeMode = ResizeMode.NoResize, // 禁止用户调整弹出窗口的大小
  208. WindowStartupLocation = WindowStartupLocation.CenterScreen, // 将弹出窗口显示在屏幕中央
  209. WindowStyle = WindowStyle.ToolWindow, // 设置弹出窗口的样式
  210. Owner = Application.Current.MainWindow // 将主窗口设置为弹出窗口的拥有者
  211. };
  212. dialog.ShowDialog(); // 显示弹出窗口
  213. }
  214. private void PDFInfoButton_Click(object sender, RoutedEventArgs e)
  215. {
  216. ShowPDFInfoDialog();
  217. }
  218. }
  219. }