Browse Source

页面编辑-修复因显示页面大小导致的拖拽卡顿问题

ZhouJieSheng 1 year ago
parent
commit
76ccc5c450
1 changed files with 25 additions and 14 deletions
  1. 25 14
      PDF Office/ViewModels/PageEdit/PageEditContentViewModel.cs

+ 25 - 14
PDF Office/ViewModels/PageEdit/PageEditContentViewModel.cs

@@ -129,6 +129,13 @@ namespace PDF_Master.ViewModels.PageEdit
         public ObservableCollection<string> PageRangeItems { get; set; }
 
         #region 属性
+
+        /// <summary>
+        /// 增加两个变量,用于记录当前控件内已经刷新图片的索引值,用于显示页面尺寸大小时,先显示当前范围可见Item的页面尺寸
+        /// </summary>
+        private int startRefreshIndex = 0;
+
+        private int endRefreshedIndex = 0;
 
         /// <summary>
         /// 是否是第一次加载
@@ -2422,7 +2429,6 @@ namespace PDF_Master.ViewModels.PageEdit
             for (int i = 0; i < PageEditItems.Count; i++)
             {
                 PageEditItems[i].PageNumber = i + 1;
-                PageEditItems[i].ShowPageSize = IsShowPageSize;
                 if (IsBOTAThumb == Visibility.Visible)
                 {
                     PageEditItems[i].FontSize = 12;
@@ -2560,19 +2566,18 @@ namespace PDF_Master.ViewModels.PageEdit
             }
             ListSelectedIndex = -1;
             selectedPageList.Clear();
-            RefreshPageNum();
-            //for (int i = 0; i < PageEditItems.Count; i++)
-            //{
-            //    PageEditItems[i].ShowPageSize = show;
-            //    if (IsBOTAThumb == Visibility.Visible)
-            //    {
-            //        PageEditItems[i].FontSize = 12;
-            //    }
-            //    else
-            //    {
-            //        PageEditItems[i].FontSize = 14;
-            //    }
-            //}
+
+            //显示显示当前范围的item的页面尺寸,其他的Item在刷新图片时,再显示尺寸
+            if (startRefreshIndex <= endRefreshedIndex)
+            {
+                for (int i = startRefreshIndex; i < endRefreshedIndex; i++)
+                {
+                    if (i >= 0 && i <= PageEditItems.Count - 1)
+                    {
+                        PageEditItems[i].ShowPageSize = IsShowPageSize;
+                    }
+                }
+            }
         }
 
         /// <summary>
@@ -2637,6 +2642,8 @@ namespace PDF_Master.ViewModels.PageEdit
         /// <param name="endIndex"></param>
         private async void RefreshItemImage(int startIndex, int endIndex)
         {
+            startRefreshIndex = startIndex;
+            endRefreshedIndex = endIndex;
             if (PDFViewer == null || PDFViewer.Document == null)
             {
                 return;
@@ -2656,6 +2663,9 @@ namespace PDF_Master.ViewModels.PageEdit
                         //补充判空逻辑,避免崩溃
                         continue;
                     }
+                    //不能一次性显示页面大小,页数较多时会导致界面卡死
+                    //每次刷新图片时,根据右键菜单状态(是否显示页面大小)来控制每个Item的页面尺寸显示
+                    PageEditItems[i].ShowPageSize = IsShowPageSize;
                     //宽高为样式中图片控件宽高
                     if (PageEditItems[i].isVertical)
                     {
@@ -2663,6 +2673,7 @@ namespace PDF_Master.ViewModels.PageEdit
                         if (PageEditItems[i].Size.Height > rate)
                         {
                             await PDFViewer.GetThumbnail(i, (int)(PageEditItems[i].Size.Width / (PageEditItems[i].Size.Height / rate)), rate);
+
                         }
                         else
                         {