MainWindow.xaml.cs 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  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. public 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. CPDFBrowseModeControl.InitWithPDFViewer(pdfViewer);
  28. CPDFColorModeControl.InitWithPDFViewer(pdfViewer);
  29. UIElement currentBotaTool = GetBotaTool();
  30. if (currentBotaTool is CPDFSearchControl)
  31. {
  32. ((CPDFSearchControl)currentBotaTool).SetPDFView(pdfViewer);
  33. }
  34. if (currentBotaTool is CPDFThumbnailControl)
  35. {
  36. ((CPDFThumbnailControl)currentBotaTool).SetPDFView(pdfViewer);
  37. ((CPDFThumbnailControl)currentBotaTool).ThumbLoaded = false;
  38. ((CPDFThumbnailControl)currentBotaTool).LoadThumb();
  39. }
  40. if (currentBotaTool is CPDFBookmarkControl)
  41. {
  42. ((CPDFBookmarkControl)currentBotaTool).SetPDFView(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. private void LogoButton_Click(object sender, RoutedEventArgs e)
  63. {
  64. Button button = sender as Button;
  65. if (button.ContextMenu.IsOpen)
  66. {
  67. button.ContextMenu.IsOpen = false;
  68. }
  69. else
  70. {
  71. button.ContextMenu.IsOpen = true;
  72. }
  73. }
  74. /// <summary>
  75. /// 搜索工具点击处理
  76. /// </summary>
  77. private void SearchToolButton_Click(object sender, RoutedEventArgs e)
  78. {
  79. UIElement botaTool = GetBotaTool();
  80. if (botaTool == null || !(botaTool is CPDFSearchControl))
  81. {
  82. CPDFSearchControl searchControl = new CPDFSearchControl();
  83. if (pdfViewer != null && pdfViewer.Document != null)
  84. {
  85. searchControl.SetPDFView(pdfViewer);
  86. }
  87. SetBotaTool(searchControl);
  88. }
  89. ExpandTool(SearchToolButton.IsChecked == true);
  90. ClearToolState(SearchToolButton);
  91. }
  92. /// <summary>
  93. /// 缩略图列表点击处理
  94. /// </summary>
  95. private void ThumbToolButton_Click(object sender, RoutedEventArgs e)
  96. {
  97. UIElement botaTool = GetBotaTool();
  98. if (botaTool == null || !(botaTool is CPDFThumbnailControl))
  99. {
  100. CPDFThumbnailControl thumbControl = new CPDFThumbnailControl();
  101. if (pdfViewer != null && pdfViewer.Document != null)
  102. {
  103. thumbControl.SetPDFView(pdfViewer);
  104. thumbControl.LoadThumb();
  105. }
  106. SetBotaTool(thumbControl);
  107. }
  108. ExpandTool(ThumbToolButton.IsChecked == true);
  109. ClearToolState(ThumbToolButton);
  110. }
  111. /// <summary>
  112. /// 书签列表点击处理
  113. /// </summary>
  114. private void BookmarkToolButtonn_Click(object sender, RoutedEventArgs e)
  115. {
  116. UIElement botaTool = GetBotaTool();
  117. if (botaTool == null || !(botaTool is CPDFBookmarkControl))
  118. {
  119. CPDFBookmarkControl bookmarkControl = new CPDFBookmarkControl();
  120. if (pdfViewer != null && pdfViewer.Document != null)
  121. {
  122. bookmarkControl.SetPDFView(pdfViewer);
  123. bookmarkControl.LoadBookmark();
  124. }
  125. SetBotaTool(bookmarkControl);
  126. }
  127. ExpandTool(BookmarkToolButton.IsChecked == true);
  128. ClearToolState(BookmarkToolButton);
  129. }
  130. /// <summary>
  131. /// 大纲列表处理
  132. /// </summary>
  133. private void OutlineToolButton_Click(object sender, RoutedEventArgs e)
  134. {
  135. UIElement botaTool = GetBotaTool();
  136. if (botaTool == null||!(botaTool is CPDFOutlineControl))
  137. {
  138. CPDFOutlineUI outlineControl = new CPDFOutlineUI();
  139. if (pdfViewer != null && pdfViewer.Document != null)
  140. {
  141. }
  142. SetBotaTool(outlineControl);
  143. }
  144. ExpandTool(OutlineToolButton.IsChecked == true);
  145. ClearToolState(OutlineToolButton);
  146. }
  147. /// <summary>
  148. /// 设置Bota工具内容
  149. /// </summary>
  150. /// <param name="newChild"></param>
  151. private void SetBotaTool(UIElement newChild)
  152. {
  153. BotaToolContainer.Child = newChild;
  154. }
  155. /// <summary>
  156. /// 获取Bota工具
  157. /// </summary>
  158. /// <returns></returns>
  159. private UIElement GetBotaTool()
  160. {
  161. return BotaToolContainer.Child;
  162. }
  163. /// <summary>
  164. /// 展开Bota工具
  165. /// </summary>
  166. /// <param name="isExpand"></param>
  167. private void ExpandTool(bool isExpand)
  168. {
  169. BotaToolContainer.Width = isExpand ? 300 : 0;
  170. BotaToolContainer.Visibility = isExpand ? Visibility.Visible : Visibility.Collapsed;
  171. }
  172. /// <summary>
  173. /// 清除左边工具栏状态
  174. /// </summary>
  175. private void ClearToolState(UIElement ignoreTool)
  176. {
  177. foreach (UIElement child in BotaSideTool.Children)
  178. {
  179. if (child != ignoreTool && child is ToggleButton buttonTool)
  180. {
  181. buttonTool.IsChecked = false;
  182. }
  183. }
  184. }
  185. private void ShowPDFInfoDialog()
  186. {
  187. CPDFInfoControl pdfInfoControl = new CPDFInfoControl();
  188. pdfInfoControl.PDFDocument = pdfViewer.Document;
  189. Window dialog = new Window
  190. {
  191. Title = "PDF Info", // 设置弹出窗口的标题
  192. Content = pdfInfoControl, // 将UserControl添加到弹出窗口中
  193. Width = 600, // 设置弹出窗口的宽度
  194. Height = 300, // 设置弹出窗口的高度
  195. ResizeMode = ResizeMode.NoResize, // 禁止用户调整弹出窗口的大小
  196. WindowStartupLocation = WindowStartupLocation.CenterScreen, // 将弹出窗口显示在屏幕中央
  197. WindowStyle = WindowStyle.ToolWindow, // 设置弹出窗口的样式
  198. Owner = Application.Current.MainWindow // 将主窗口设置为弹出窗口的拥有者
  199. };
  200. dialog.ShowDialog(); // 显示弹出窗口
  201. }
  202. private void PDFInfoButton_Click(object sender, RoutedEventArgs e)
  203. {
  204. ShowPDFInfoDialog();
  205. }
  206. }
  207. }