浏览代码

页面编辑-修复页面编辑选中效果相关的bug

ZhouJieSheng 1 年之前
父节点
当前提交
dff17523f0

+ 11 - 8
PDF Office/ViewModels/PageEdit/PageEditContentViewModel.cs

@@ -927,16 +927,15 @@ namespace PDF_Master.ViewModels.PageEdit
             }
             if (selectedPageList.Count > 0)
             {
-                List<int> pageRange = new List<int>();
-                pageRange.Add(selectedPageList[0]);
                 //缩略图模式 调整item大小的时候,更新选中项
+                //如果注释掉,调整BOTA宽度后,缩略图视图中不会显示选中项
                 if (selectedPageList.Count < 1)
                 {
                     NotifyUIToRefresh(new List<int>() { PDFViewer.CurrentIndex + 1 });
                 }
                 else
                 {
-                    NotifyUIToRefresh(pageRange);
+                    NotifyUIToRefresh(selectedPageList);
                 }
             }
         }
@@ -2220,7 +2219,7 @@ namespace PDF_Master.ViewModels.PageEdit
         /// <summary>
         /// 从PDFView获取所有Items集合
         /// </summary>
-        private void GetSourceItems(bool isFirstLoad)
+        public void GetSourceItems(bool isFirstLoad)
         {
             if (isFirstLoad || IsBOTAThumb == Visibility.Visible)
             {
@@ -2419,10 +2418,12 @@ namespace PDF_Master.ViewModels.PageEdit
                 }
             }
             DragSorting = false;
-            //通知UI选中Items
-            NotifyUIToRefresh(selectedPages);
+
             //刷新页码和图片
-            ReloadAfterOption(true, false, new Tuple<int, int>(0, PDFViewer.Document.PageCount));
+            ReloadAfterOption(true, false, new Tuple<int, int>(0, PDFViewer.Document.PageCount));
+            //先刷新页码再选中item,顶部的选中页面更准确
+            //通知UI选中Items
+            NotifyUIToRefresh(selectedPages);
 
             if (!IsFromUndoRedo)
             {
@@ -2539,7 +2540,9 @@ namespace PDF_Master.ViewModels.PageEdit
                     IsBOTAThumb = Visibility.Collapsed;
                 }
 
-                GetSourceItems(isFirstLoad);
+                //每次进入页面编辑都刷新item个数,缩略图删减时,可以更新item
+                //需要留意大文档性能
+                GetSourceItems(true);
 
                 //清空一下选中项,修复进入页面编辑后仍然选中多页的问题
                 ListSelectedIndex = -1;

+ 16 - 4
PDF Office/Views/PageEdit/PageEditContent.xaml.cs

@@ -116,7 +116,7 @@ namespace PDF_Master.Views.PageEdit
             viewModel.PageEditItems.CollectionChanged += PageEditItems_CollectionChanged;
 
             //订阅页面刷新事件
-            eventor.GetEvent<PageEditNotifyEvent>().Subscribe(OneNotifyEvent, e => e.Unicode == unicode&&e.Type!= NotifyType.PageCountChanged);
+            eventor.GetEvent<PageEditNotifyEvent>().Subscribe(OneNotifyEvent, e => e.Unicode == unicode);
             eventAggregator.GetEvent<CleanSelectAllEvent>().Subscribe(CleanSelectAll, e => e.Unicode == unicode);
         }
 
@@ -129,7 +129,7 @@ namespace PDF_Master.Views.PageEdit
 
         private void PageEditItems_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
         {
-            //假如loaded判断,避免显示前频繁进入该事件,影响BOTA切换事件
+            //加入loaded判断,避免显示前频繁进入该事件,影响BOTA切换事件
             if (this.IsLoaded)
             {
                 //BOTA缩略图里 插入子项时,刷新子项大小
@@ -137,8 +137,12 @@ namespace PDF_Master.Views.PageEdit
                 {
                     ItemSuitAcutalWidth(this.ActualWidth);
                 }
-                //页面总数变化后用于通知BOTA面板进行数据集刷新
-                eventor.GetEvent<PageEditNotifyEvent>().Publish(new PageEditNotifyEventArgs(unicode, NotifyType.PageCountChanged));
+                if (GridBOTAHeader.Visibility != Visibility.Visible)
+                {
+                    //页面编辑模式下,页面总数变化后用于通知BOTA面板进行数据集刷新
+                    //只需要页面编辑通知缩略图,不需要缩略图通知页面编辑,因为现在每次导航进去时都会刷新item个数
+                    eventor.GetEvent<PageEditNotifyEvent>().Publish(new PageEditNotifyEventArgs(unicode, NotifyType.PageCountChanged));
+                }
             }
         }
 
@@ -171,6 +175,14 @@ namespace PDF_Master.Views.PageEdit
                         }
                     }
                     break;
+                case NotifyType.PageCountChanged:
+                    if(GridBOTAHeader.Visibility == Visibility.Visible)
+                    {
+                        viewModel?.GetSourceItems(false);
+                    }
+                    break;
+                default:
+                    break;
             }
         }