PDFToolsContent.xaml.cs 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727
  1. using PDF_Office.CustomControl;
  2. using PDF_Office.Helper;
  3. using PDF_Office.Model.PDFTool;
  4. using PDF_Office.ViewModels.HomePanel;
  5. using PDF_Office.ViewModels.HomePanel.PDFTools;
  6. using PDFSettings;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.IO;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. using System.Windows;
  14. using System.Windows.Controls;
  15. using System.Windows.Data;
  16. using System.Windows.Documents;
  17. using System.Windows.Input;
  18. using System.Windows.Media;
  19. using System.Windows.Media.Animation;
  20. using System.Windows.Media.Imaging;
  21. using System.Windows.Navigation;
  22. using System.Windows.Shapes;
  23. namespace PDF_Office.Views.HomePanel.PDFTools
  24. {
  25. /// <summary>
  26. /// ToolbarPage.xaml 的交互逻辑
  27. /// </summary>
  28. public partial class PDFToolsContent : UserControl
  29. {
  30. private PDFToolsContentViewModel ViewModel => DataContext as PDFToolsContentViewModel;
  31. private ListItemQuickTool sourceListItem = null;
  32. private ListItemQuickTool targetListItem = null;
  33. private ListItemQuickTool quickSourceListItem = null;
  34. private List<ToolItem> quickTools = null;
  35. private List<ToolItem> allTools = null;
  36. private List<ToolItem> moreTools = null;
  37. PDFToolsHelper PDFtools;
  38. private string fileName = string.Empty;
  39. private BitmapSource bitmapSource = null;
  40. private bool isMoreCuts = false;
  41. private bool isMove = false;
  42. private Point wrpnlPoint;
  43. private Point mousePoint;
  44. public PDFToolsContent()
  45. {
  46. InitializeComponent();
  47. PDFtools = PDFToolsHelper.GetInstance();
  48. #region ListBox
  49. SetListBox();
  50. #endregion ListBox
  51. }
  52. /// <summary>
  53. /// 获取与窗口相对的鼠标位置。
  54. /// </summary>
  55. /// <param name="sender"></param>
  56. /// <param name="e"></param>
  57. private void OnRendering(object sender, EventArgs e)
  58. {
  59. mousePoint = Mouse.GetPosition(this);
  60. Console.WriteLine($"鼠标坐标:{mousePoint.X}:{mousePoint.Y}");
  61. }
  62. private void SetListBox()
  63. {
  64. quickTools = PDFtools.QuickTools;
  65. allTools = PDFtools.AllTools;
  66. moreTools = PDFtools.MoreTools;
  67. ListShortCutsExpend.ItemsSource = ListShortCuts.ItemsSource = quickTools;
  68. ListMoreCutsExpend.ItemsSource = ListMoreCuts.ItemsSource = moreTools;
  69. }
  70. private void Page_Loaded(object sender, RoutedEventArgs e)
  71. {
  72. UpdateExptend();
  73. if (ViewModel != null)
  74. {
  75. ViewModel.ExpendToolsHanlder -= ViewModel_ExpendToolsHanlder;
  76. ViewModel.ExpendToolsHanlder += ViewModel_ExpendToolsHanlder;
  77. }
  78. }
  79. private void ViewModel_ExpendToolsHanlder(object sender, bool e)
  80. {
  81. if(e)
  82. {
  83. ListShortCutsExpend.Items.Refresh();
  84. ListMoreCutsExpend.Items.Refresh();
  85. ListBoxCutsWidthChanged(ListShortCutsExpend);
  86. ListBoxCutsWidthChanged(ListMoreCutsExpend);
  87. }
  88. else
  89. {
  90. ListShortCuts.Items.Refresh();
  91. ListMoreCuts.Items.Refresh();
  92. ListBoxCutsWidthChanged(ListShortCuts);
  93. ListBoxCutsWidthChanged(ListMoreCuts);
  94. }
  95. }
  96. private ListBoxEx GetListShortControl()
  97. {
  98. ListBoxEx ShortEx = null;
  99. if (ListShortCuts.Visibility == Visibility.Visible)
  100. {
  101. ShortEx = ListShortCuts;
  102. }
  103. else
  104. {
  105. ShortEx = ListShortCutsExpend;
  106. }
  107. return ShortEx;
  108. }
  109. private ListBoxEx GetListMoreControl()
  110. {
  111. ListBoxEx MoreEx = null;
  112. if (ListMoreCuts.Visibility == Visibility.Visible)
  113. {
  114. MoreEx = ListMoreCuts;
  115. }
  116. else
  117. {
  118. MoreEx = ListMoreCutsExpend;
  119. }
  120. return MoreEx;
  121. }
  122. private void ListBoxMoreCuts_PreviewMouseMove(object sender, MouseEventArgs e)
  123. {
  124. ListBoxEx MoreEx = GetListMoreControl();
  125. if (MoreEx == null) return;
  126. var pos = e.GetPosition(MoreEx);
  127. if (e.LeftButton == MouseButtonState.Pressed)
  128. {
  129. MoreEx.AllowDrop = true;
  130. HitTestResult result = VisualTreeHelper.HitTest(MoreEx, pos);
  131. if (result == null)
  132. {
  133. sourceImage.Visibility = Visibility.Hidden;
  134. return;
  135. }
  136. sourceListItem = (ListItemQuickTool)CommonHelper.FindVisualParent<ListBoxItem>(result.VisualHit);
  137. if (sourceListItem == null || sourceListItem.Content != MoreEx.SelectedItem)
  138. {
  139. return;
  140. }
  141. //获取控件相对于另一控件的坐标
  142. wrpnlPoint = sourceListItem.TranslatePoint(new Point(), this);
  143. System.Windows.DataObject dataObj = new System.Windows.DataObject(sourceListItem.Content as ToolItem);
  144. if (dataObj != null)
  145. {
  146. //控件截图
  147. IsMoreToolbars();
  148. if (string.IsNullOrEmpty(fileName))
  149. {
  150. sourceImage.Visibility = Visibility.Hidden;
  151. return;
  152. }
  153. //图片解码
  154. ImageDecoding();
  155. isMoreCuts = true;
  156. DragDrop.DoDragDrop(MoreEx, dataObj, System.Windows.DragDropEffects.Move);
  157. }
  158. }
  159. else
  160. {
  161. moveImage.Visibility = Visibility.Hidden;
  162. sourceImage.Visibility = Visibility.Hidden;
  163. }
  164. }
  165. private void ImageDecoding()
  166. {
  167. Stream imageStreamSource = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
  168. PngBitmapDecoder decoder = new PngBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
  169. bitmapSource = decoder.Frames[0];
  170. }
  171. private void IsMoreToolbars()
  172. {
  173. var source = sourceListItem.Content as ToolItem;
  174. if (moreTools == null && moreTools.Count != 0) return;
  175. List<ToolItem> toolModule = moreTools.FindAll(item => item.FnName == source.FnName);
  176. if (toolModule.Count > 0)
  177. {
  178. // 判断文件夹是否存在,不存在则创建
  179. DirectoryInfo folder = new DirectoryInfo(System.IO.Path.Combine(System.IO.Path.GetTempPath(), "Asource"));
  180. if (!folder.Exists)
  181. {
  182. folder.Create();
  183. }
  184. fileName = System.IO.Path.Combine(folder.FullName, $"{source.FnName}.png");
  185. SaveToPng(sourceListItem, fileName);
  186. }
  187. }
  188. private void ListBoxShortCuts_Drop(object sender, DragEventArgs e)
  189. {
  190. ListBoxEx ShortEx = GetListShortControl();
  191. if(ShortEx == null) return;
  192. var pos = e.GetPosition(ShortEx);
  193. var result = VisualTreeHelper.HitTest(ShortEx, pos);
  194. if (result == null)
  195. {
  196. WorkingWithAnimation(pos);
  197. return;
  198. }
  199. //查找目标数据
  200. targetListItem = (ListItemQuickTool)CommonHelper.FindVisualParent<ListBoxItem>(result.VisualHit);
  201. if (targetListItem == null)
  202. {
  203. WorkingWithAnimation(pos);
  204. return;
  205. }
  206. var targetAToolModule = targetListItem.Content as ToolItem;
  207. ToolItem target = quickTools.Find(c => c.FnName == targetAToolModule.FnName);
  208. //查找元数据
  209. var sourceAToolModule = e.Data.GetData(typeof(ToolItem)) as ToolItem;
  210. if (sourceAToolModule == null)
  211. {
  212. sourceImage.Visibility = Visibility.Hidden;
  213. // target.SetValue(AToolModule.IsFilePickedProperty, false);
  214. return;
  215. }
  216. if (ReferenceEquals(targetAToolModule, sourceAToolModule))
  217. {
  218. sourceImage.Visibility = Visibility.Hidden;
  219. // target.SetValue(AToolModule.IsFilePickedProperty, false);
  220. return;
  221. }
  222. if (targetAToolModule == null && sourceAToolModule == null)
  223. {
  224. sourceImage.Visibility = Visibility.Hidden;
  225. // target.SetValue(AToolModule.IsFilePickedProperty, false);
  226. return;
  227. }
  228. ModuleExchange(sourceAToolModule, targetAToolModule);
  229. }
  230. private void ModuleExchange(ToolItem sourceAToolModule, ToolItem targetAToolModule)
  231. {
  232. if (moreTools == null) return;
  233. ToolItem source = moreTools.Find(c => c.FnName == sourceAToolModule.FnName);
  234. ListBoxEx MoreEx = GetListMoreControl();
  235. if (MoreEx == null) return;
  236. ListBoxEx ShortEx = GetListShortControl();
  237. if (ShortEx == null) return;
  238. int targetIndex = quickTools.FindIndex(item => item.FnName == targetAToolModule.FnName);
  239. if (targetIndex < 0) return;
  240. if (!isMoreCuts)
  241. {
  242. MoreEx.AllowDrop = false;
  243. sourceImage.Visibility = Visibility.Hidden;
  244. source = quickTools.Find(c => c.FnName == sourceAToolModule.FnName);
  245. if (source == null) return;
  246. int sourceIndex = quickTools.FindIndex(item => item.FnName == sourceAToolModule.FnName);
  247. if (sourceIndex < 0) return;
  248. var temp = quickTools[sourceIndex];
  249. quickTools[sourceIndex] = quickTools[targetIndex];
  250. quickTools[targetIndex] = temp;
  251. var sourceId = source.ToolTypeId;
  252. var targetId = target.ToolTypeId;
  253. source.ToolTypeId = targetId;
  254. target.ToolTypeId = sourceId;
  255. source.IsQuickTool = true;
  256. target.IsQuickTool = true;
  257. ShortEx.Items.Refresh();
  258. ListBoxCutsWidthChanged(ShortEx);
  259. }
  260. else
  261. {
  262. if (target == null) return;
  263. if (source == null) return;
  264. moreTools.Remove(source);
  265. moreTools.Insert(0, target);
  266. quickTools.Remove(target);
  267. quickTools.Insert(targetIndex, source);
  268. source.IsQuickTool = true;
  269. target.IsQuickTool = false;
  270. var targetId = target.ToolTypeId;
  271. source.ToolTypeId = targetId;
  272. target.ToolTypeId = 0;//移到第一个位置
  273. MoreEx.Items.Refresh();
  274. ShortEx.Items.Refresh();
  275. sourceImage.Visibility = Visibility.Hidden;
  276. targetListItem.IsOverModular = false;
  277. ListBoxCutsWidthChanged(ShortEx);
  278. ListBoxCutsWidthChanged(MoreEx);
  279. }
  280. if (PDFtools != null)
  281. PDFtools.SaveCacheList();
  282. }
  283. private void WorkingWithAnimation(Point pos)
  284. {
  285. sourceImage.Visibility = Visibility.Hidden;
  286. if (!isMoreCuts || !isMove)
  287. {
  288. moveImage.Visibility = Visibility.Hidden;
  289. }
  290. else
  291. {
  292. if (sourceListItem == null) return;
  293. moveImage.Visibility = Visibility.Visible;
  294. Point point = sourceListItem.TransformToAncestor(this).Transform(new Point(0, 0));
  295. ImageMoveTo(new Point(pos.X - 80, pos.Y), new Point(wrpnlPoint.X + 40, wrpnlPoint.Y), moveImage, 200);
  296. }
  297. }
  298. /// <summary>
  299. /// 图片移动动画
  300. /// </summary>
  301. /// <param name="curPoint">初始位置</param>
  302. /// <param name="deskPoint">控件要移动到的位置</param>
  303. /// <param name="ell">你要移动的空间</param>
  304. /// <param name="space">设置移动的时间片(关系到控件移动的速度)</param>
  305. private void ImageMoveTo(Point curPoint, Point deskPoint, Image ell, double space)
  306. {
  307. Storyboard storyboard = new Storyboard(); //创建Storyboard对象
  308. double lxspeed = space, lyspeed = space; //设置X方向 / Y方向 移动时间片
  309. //创建X轴方向动画
  310. DoubleAnimation dox = new DoubleAnimation(
  311. curPoint.X,
  312. deskPoint.X,
  313. new Duration(TimeSpan.FromMilliseconds(lxspeed))
  314. );
  315. //创建Y轴方向动画
  316. DoubleAnimation doy = new DoubleAnimation(
  317. curPoint.Y,
  318. deskPoint.Y,
  319. new Duration(TimeSpan.FromMilliseconds(lyspeed))
  320. );
  321. Storyboard.SetTarget(dox, ell);
  322. Storyboard.SetTarget(doy, ell);
  323. Storyboard.SetTargetProperty(dox, new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.X)"));
  324. Storyboard.SetTargetProperty(doy, new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.Y)"));
  325. storyboard.Children.Add(dox);
  326. storyboard.Children.Add(doy);
  327. storyboard.Completed += Storyboard_Completed;
  328. //动画播放
  329. storyboard.Begin();
  330. }
  331. private void Storyboard_Completed(object sender, EventArgs e)
  332. {
  333. moveImage.Visibility = Visibility.Hidden;
  334. }
  335. /// <summary>
  336. /// 控件截图
  337. /// </summary>
  338. /// <param name="visual">控件</param>
  339. /// <param name="fileName">文件路径 C:\Users\oyxh\AppData\Local\Temp\</param>
  340. private void SaveToPng(FrameworkElement visual, string fileName)
  341. {
  342. DrawingVisual drawingVisual = new DrawingVisual();
  343. using (DrawingContext context = drawingVisual.RenderOpen())
  344. {
  345. VisualBrush brush = new VisualBrush(sourceListItem) { Stretch = Stretch.None };
  346. context.DrawRectangle(brush, null, new Rect(0, 0, sourceListItem.ActualWidth, sourceListItem.ActualHeight));
  347. context.Close();
  348. }
  349. RenderTargetBitmap targetBitmap = new RenderTargetBitmap((int)sourceListItem.ActualWidth, (int)sourceListItem.ActualHeight, 96d, 96d, PixelFormats.Default);
  350. targetBitmap.Render(drawingVisual);
  351. FileStream stream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
  352. PngBitmapEncoder encoder = new PngBitmapEncoder();
  353. encoder.Interlace = PngInterlaceOption.On;
  354. encoder.Frames.Add(BitmapFrame.Create(targetBitmap));
  355. encoder.Save(stream);
  356. stream.Close();
  357. }
  358. private ToolItem target;
  359. private void ListBoxShortCuts_DragOver(object sender, DragEventArgs e)
  360. {
  361. ListBoxEx MoreEx = GetListMoreControl();
  362. if (MoreEx == null) return;
  363. ListBoxEx ShortEx = GetListShortControl();
  364. if (ShortEx == null) return;
  365. var pos = e.GetPosition(ShortEx);
  366. Console.WriteLine($"pos:{pos.X} {pos.Y} this.Grid.ActualHeight1 {this.Grid.ActualHeight}");
  367. if (pos.Y < 0)
  368. {
  369. isMove = false;
  370. sourceImage.Visibility = Visibility.Hidden;
  371. sourceListItem = null;
  372. return;
  373. }
  374. if (pos.Y >= this.Grid.ActualHeight - 50)
  375. {
  376. isMove = false;
  377. sourceImage.Visibility = Visibility.Hidden;
  378. sourceListItem = null;
  379. return;
  380. }
  381. if (pos.X < 10)
  382. {
  383. isMove = false;
  384. sourceListItem = null;
  385. sourceImage.Visibility = Visibility.Hidden;
  386. return;
  387. }
  388. if (pos.X >= this.Grid.ActualWidth - 10)
  389. {
  390. isMove = false;
  391. sourceListItem = null;
  392. sourceImage.Visibility = Visibility.Hidden;
  393. return;
  394. }
  395. if (!isMoreCuts)
  396. {
  397. var sourceAToolModule = e.Data.GetData(typeof(ToolItem)) as ToolItem;
  398. if (sourceAToolModule == null) return;
  399. int sourceIndex = quickTools.FindIndex(item => item.FnName == sourceAToolModule.FnName);
  400. //根据index找listbox对应的item
  401. sourceListItem = (ListItemQuickTool)(ShortEx.ItemContainerGenerator.ContainerFromIndex(sourceIndex) as FrameworkElement);
  402. if (sourceListItem == null)
  403. {
  404. return;
  405. }
  406. MoreEx.AllowDrop = false;
  407. sourceImage.Visibility = Visibility.Hidden;
  408. }
  409. else
  410. {
  411. var sourceAToolModule = e.Data.GetData(typeof(ToolItem)) as ToolItem;
  412. if (sourceAToolModule == null) return;
  413. int sourceIndex = moreTools.FindIndex(item => item.FnName == sourceAToolModule.FnName);
  414. //根据index找listbox对应的item
  415. sourceListItem = (ListItemQuickTool)(MoreEx.ItemContainerGenerator.ContainerFromIndex(sourceIndex) as FrameworkElement);
  416. if (sourceListItem == null)
  417. {
  418. return;
  419. }
  420. isMove = true;
  421. //图片绑定
  422. ImageBinding(pos);
  423. }
  424. var result = VisualTreeHelper.HitTest(ShortEx, pos);
  425. if (result == null)
  426. {
  427. return;
  428. }
  429. //查找目标数据
  430. targetListItem = (ListItemQuickTool)CommonHelper.FindVisualParent<ListBoxItem>(result.VisualHit);
  431. if (targetListItem == null)
  432. {
  433. //sourceImage.Visibility = Visibility.Hidden;
  434. return;
  435. }
  436. var targetAToolModule = targetListItem.Content as ToolItem;
  437. if (targetAToolModule == null) return;
  438. target = quickTools.Find(c => c.FnName == targetAToolModule.FnName);
  439. }
  440. /// <summary>
  441. ///图片绑定
  442. /// </summary>
  443. private void ImageBinding(System.Windows.Point pos)
  444. {
  445. sourceImage.Visibility = Visibility.Visible;
  446. sourceImage.Source = bitmapSource;
  447. sourceImage.Margin = new Thickness(pos.X - 80, pos.Y, 0, 0);
  448. moveImage.Source = sourceImage.Source;
  449. }
  450. private void ListBoxShortCuts_PreviewMouseMove(object sender, MouseEventArgs e)
  451. {
  452. if (e.LeftButton == MouseButtonState.Pressed)
  453. {
  454. ListBoxEx MoreEx = GetListMoreControl();
  455. if (MoreEx == null) return;
  456. ListBoxEx ShortEx = GetListShortControl();
  457. if (ShortEx == null) return;
  458. MoreEx.AllowDrop = false;
  459. var pos = e.GetPosition(ShortEx);
  460. HitTestResult result = VisualTreeHelper.HitTest(ShortEx, pos);
  461. if (result == null)
  462. {
  463. return;
  464. }
  465. quickSourceListItem = (ListItemQuickTool)CommonHelper.FindVisualParent<ListBoxItem>(result.VisualHit);
  466. if (quickSourceListItem == null || quickSourceListItem.Content != ShortEx.SelectedItem)
  467. {
  468. return;
  469. }
  470. System.Windows.DataObject dataObj = new System.Windows.DataObject(quickSourceListItem.Content as ToolItem);
  471. if (dataObj != null)
  472. {
  473. isMoreCuts = false;
  474. DragDrop.DoDragDrop(ShortEx, dataObj, System.Windows.DragDropEffects.Move);
  475. }
  476. }
  477. else
  478. {
  479. sourceImage.Visibility = Visibility.Hidden;
  480. //moveImage.Visibility = Visibility.Hidden;
  481. }
  482. }
  483. private void sourceImage_Drop(object sender, DragEventArgs e)
  484. {
  485. ListBoxShortCuts_Drop(sender, e);
  486. }
  487. private void sourceImage_PreviewMouseMove(object sender, MouseEventArgs e)
  488. {
  489. ListBoxMoreCuts_PreviewMouseMove(sender, e);
  490. }
  491. private void sourceImage_DragOver(object sender, DragEventArgs e)
  492. {
  493. ListBoxShortCuts_DragOver(sender, e);
  494. }
  495. private void Label_PreviewMouseMove(object sender, MouseEventArgs e)
  496. {
  497. ListBoxMoreCuts_PreviewMouseMove(sender, e);
  498. }
  499. private void ListBoxMoreCuts_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
  500. {
  501. //获取当前控件元素相对鼠标点击的位置(只有点击在当前A控件,会触发事件并返回相对A控件的鼠标位置)。
  502. Point pp = Mouse.GetPosition(e.Source as FrameworkElement);//WPF方法
  503. sourceImage.Visibility = Visibility.Hidden;
  504. if (pp.X < 0 || pp.Y < 0)
  505. {
  506. moveImage.Visibility = Visibility.Hidden;
  507. }
  508. }
  509. private void ListBoxShortCuts_SizeChanged(object sender, SizeChangedEventArgs e)
  510. {
  511. ListBoxEx ShortEx = GetListShortControl();
  512. if (ShortEx == null) return;
  513. ListBoxCutsWidthChanged(ShortEx);
  514. }
  515. private void ListBoxMoreCuts_SizeChanged(object sender, SizeChangedEventArgs e)
  516. {
  517. ListBoxEx MoreEx = GetListMoreControl();
  518. if (MoreEx == null) return;
  519. ListBoxCutsWidthChanged(MoreEx);
  520. }
  521. private void ListBoxCutsWidthChanged(ListBoxEx list)
  522. {
  523. //3x + 4y = containerWidth;
  524. //3x = y;
  525. //x为间距,y为item;
  526. double containerWidth = list.ActualWidth - 20;
  527. int widthItem = (int)containerWidth / 5;
  528. double margin = widthItem / 3;
  529. int i = 0;
  530. foreach (var item in list.Items)
  531. {
  532. i++;
  533. var listBoxItem = list.ItemContainerGenerator.ContainerFromItem(item) as ListBoxItem;
  534. if (listBoxItem != null)
  535. {
  536. if (i % 4 != 0)
  537. {
  538. listBoxItem.Margin = new Thickness(0, 0, margin, 0);
  539. }
  540. else
  541. {
  542. listBoxItem.Margin = new Thickness(0, 0, 0, 0);
  543. }
  544. listBoxItem.Width = widthItem;
  545. }
  546. }
  547. }
  548. private void BtnTools_Click(object sender, RoutedEventArgs e)
  549. {
  550. }
  551. private void BtnExptend_Click(object sender, RoutedEventArgs e)
  552. {
  553. UpdateExptend();
  554. }
  555. private void UpdateExptend()
  556. {
  557. //foreach (var item in allTools)
  558. //{
  559. // item.IsShowConciseContent = !(bool)BtnExptend.IsChecked;
  560. //}
  561. //foreach (var item in quickTools)
  562. //{
  563. // item.IsShowConciseContent = !(bool)BtnExptend.IsChecked;
  564. //}
  565. }
  566. //自适应流式布局,以防改需求备用
  567. //private void ListBoxMoreCutsWidthChanged()
  568. //{
  569. // double containerWidth = ListBoxShortCuts.ActualWidth;
  570. // int Rowcount = (int)containerWidth / 240;
  571. // double EndRow = containerWidth % 240.0;
  572. // Rowcount = EndRow >= 140 ? ++Rowcount : Rowcount;
  573. // int i = 0;
  574. // foreach (var item in ListBoxMoreCuts.Items)
  575. // {
  576. // i++;
  577. // var listBoxItem = ListBoxMoreCuts.ItemContainerGenerator.ContainerFromItem(item) as ListBoxItem;
  578. // if (listBoxItem != null)
  579. // {
  580. // if (i % Rowcount != 0)
  581. // {
  582. // listBoxItem.Margin = new Thickness(0, 0, 100, 0);
  583. // }
  584. // else
  585. // {
  586. // listBoxItem.Margin = new Thickness(0, 0, 0, 0);
  587. // }
  588. // }
  589. // }
  590. //}
  591. ///// <summary>
  592. ///// 扩展收缩UI
  593. ///// </summary>
  594. ///// <param name="IsShowConciseContent">是否收缩</param>
  595. //private void ShowToolsUI(ListBoxEx list,bool IsShowConciseContent)
  596. //{
  597. // foreach (var item in list.Items)
  598. // {
  599. // var listBoxItem = list.ItemContainerGenerator.ContainerFromItem(item) as ListBoxItem;
  600. // if (listBoxItem != null)
  601. // {
  602. // var viewItem = listBoxItem.ContentTemplate;
  603. // var myContentPresenter = CommonHelper.FindVisualChild<ContentPresenter>(listBoxItem);
  604. // var obj = viewItem.FindName("data", myContentPresenter);
  605. // var checkNum = obj as PDFToolItem;
  606. // if (checkNum != null)
  607. // {
  608. // checkNum.IsShowConciseContent = IsShowConciseContent;
  609. // }
  610. // }
  611. // }
  612. //}
  613. }
  614. }