Ver Fonte

页面编辑-修复多选复制后,粘贴位置不准确的问题

ZhouJieSheng há 1 ano atrás
pai
commit
5313de70d1

+ 5 - 2
PDF Office/ViewModels/PageEdit/PageEditContentViewModel.cs

@@ -141,7 +141,7 @@ namespace PDF_Master.ViewModels.PageEdit
         /// <summary>
         /// 记录多选项中最后一项的索引
         /// </summary>
-        private int maxSelectedIndex = 0;
+        private int maxSelectedIndex = -1;
 
         private Visibility showTip = Visibility.Collapsed;
         /// <summary>
@@ -1036,6 +1036,9 @@ namespace PDF_Master.ViewModels.PageEdit
             else
             {
                 IsMultiSelected = false;
+                //非多选的时候需要重置多选页码的标志符
+                //否则会有多选页面复制后,粘贴位置不准确的问题
+                maxSelectedIndex = -1;
             }
         }
 
@@ -1282,7 +1285,6 @@ namespace PDF_Master.ViewModels.PageEdit
             {
                 pageRange.Add(insertindex + i + 1);
             }
-            NotifyUIToRefresh(pageRange);
 
             PageEditHistory history = new PageEditHistory();
             history.InsertIndex = insertindex;
@@ -1293,6 +1295,7 @@ namespace PDF_Master.ViewModels.PageEdit
 
             //刷新页码等
             ReloadAfterOption(true, false, new Tuple<int, int>(0, PDFViewer.Document.PageCount));
+            //通知Xaml选中新增的页面,从VM设置选中项会有问题
             NotifyUIToRefresh(pageRange);
             IsLoading = Visibility.Collapsed;
         }

Diff do ficheiro suprimidas por serem muito extensas
+ 14 - 6
PDF Office/Views/PageEdit/PageEditContent.xaml


+ 22 - 17
PDF Office/Views/PageEdit/PageEditContent.xaml.cs

@@ -94,21 +94,11 @@ namespace PDF_Master.Views.PageEdit
 
         private PageEditContentViewModel viewModel;
 
-        public PageEditContent()
-        {
-            InitializeComponent();
 
-        }
 
-        private void PageEditItems_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
+        public PageEditContent()
         {
-            //BOTA缩略图里 插入子项时,刷新子项大小
-            if (GridBOTAHeader.Visibility == Visibility.Visible&&e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
-            {
-                ItemSuitAcutalWidth(this.ActualWidth);
-            }
-            //页面总数变化后用于通知BOTA面板进行数据集刷新
-            eventor.GetEvent<PageEditNotifyEvent>().Publish(new PageEditNotifyEventArgs(unicode,NotifyType.PageCountChanged));
+            InitializeComponent();
         }
 
         public PageEditContent(IEventAggregator eventAggregator) : this()
@@ -129,11 +119,6 @@ namespace PDF_Master.Views.PageEdit
             eventAggregator.GetEvent<CleanSelectAllEvent>().Subscribe(CleanSelectAll, e => e.Unicode == unicode);
         }
 
-        private void CleanSelectAll(CleanSelectAllArgs obj)
-        {
-            ListPageEdit.SelectedItems.Clear();
-            ListPageEdit.SelectedIndex = viewModel.PDFViewer.CurrentIndex;
-        }
 
         private void Timer_Tick(object sender, EventArgs e)
         {
@@ -141,15 +126,28 @@ namespace PDF_Master.Views.PageEdit
             timer?.Stop();
         }
 
+        private void PageEditItems_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
+        {
+            //BOTA缩略图里 插入子项时,刷新子项大小
+            if (GridBOTAHeader.Visibility == Visibility.Visible && e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
+            {
+                ItemSuitAcutalWidth(this.ActualWidth);
+            }
+            //页面总数变化后用于通知BOTA面板进行数据集刷新
+            eventor.GetEvent<PageEditNotifyEvent>().Publish(new PageEditNotifyEventArgs(unicode, NotifyType.PageCountChanged));
+        }
+
         private void OneNotifyEvent(PageEditNotifyEventArgs e)
         {
 
             switch (e.Type)
             {
                 case NotifyType.RefreshPage:
+                    //计算当前区域的页面范围后传递回VM
                     PulishEvent();
                     break;
                 case NotifyType.SelectItems:
+                    //根据Vm的参数选中部分页面
                     if (e.PageRange.Count == 1)
                     {
                         ListPageEdit.SelectedIndex = e.PageRange[0] - 1;
@@ -167,6 +165,13 @@ namespace PDF_Master.Views.PageEdit
             }
         }
 
+        private void CleanSelectAll(CleanSelectAllArgs obj)
+        {
+            ListPageEdit.SelectedItems.Clear();
+            ListPageEdit.SelectedIndex = viewModel.PDFViewer.CurrentIndex;
+        }
+
+
 
         #region UI事件
         /// <summary>