|
@@ -58,6 +58,16 @@ namespace PDF_Office.ViewModels
|
|
|
|
|
|
public DelegateCommand<object> ShowViewModularCommand { get; set; }
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 上一个视图
|
|
|
+ /// </summary>
|
|
|
+ public DelegateCommand PreViewCommand { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 下一个视图
|
|
|
+ /// </summary>
|
|
|
+ public DelegateCommand NextViewCommnad { get; set; }
|
|
|
+
|
|
|
private bool isShowViewModular = false;
|
|
|
|
|
|
/// <summary>
|
|
@@ -181,11 +191,51 @@ namespace PDF_Office.ViewModels
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private bool isPreEnable = false;
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 前进是否启用
|
|
|
+ /// </summary>
|
|
|
+ public bool IsPreEnable
|
|
|
+ {
|
|
|
+ get { return isPreEnable; }
|
|
|
+ set
|
|
|
+ {
|
|
|
+ SetProperty(ref isPreEnable, value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private bool isNextEnable = false;
|
|
|
+
|
|
|
+ public bool IsNextEnable
|
|
|
+ {
|
|
|
+ get { return isNextEnable; }
|
|
|
+ set
|
|
|
+ {
|
|
|
+ SetProperty(ref isNextEnable, value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private Stack<int> UndoStack = new Stack<int>();
|
|
|
+
|
|
|
+ private Stack<int> RedoStack = new Stack<int>();
|
|
|
+
|
|
|
|
|
|
public CPDFViewer PDFViewer { get; set; }
|
|
|
|
|
|
public ViewContentViewModel ViewContentViewModel { get; set; }
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 来自undo redo方法的跳页 不计入栈
|
|
|
+ /// </summary>
|
|
|
+ private bool isFromMethod = false;
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 记录上一个页面索引值
|
|
|
+ /// </summary>
|
|
|
+
|
|
|
+ private int oldPageIndex = 0;
|
|
|
+
|
|
|
private IRegionManager region;
|
|
|
|
|
|
private IDialogService dialogs;
|
|
@@ -206,6 +256,41 @@ namespace PDF_Office.ViewModels
|
|
|
PageTextPreviewKeyDownCommand = new DelegateCommand<object>(PageNumText_PreviewKeyDown);
|
|
|
SelectionChangedCommand = new DelegateCommand<object>(SelectionChangedEvent);
|
|
|
ShowViewModularCommand = new DelegateCommand<object>(ShowViewModularEvent);
|
|
|
+
|
|
|
+ PreViewCommand = new DelegateCommand(undo);
|
|
|
+
|
|
|
+ NextViewCommnad = new DelegateCommand(redo);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void undo()
|
|
|
+ {
|
|
|
+ RedoStack.Push(PDFViewer.CurrentIndex);
|
|
|
+ IsNextEnable = true;
|
|
|
+
|
|
|
+ int index = UndoStack.Pop();
|
|
|
+ PDFViewer.GoToPage(index);
|
|
|
+ if(UndoStack.Count<=0)
|
|
|
+ {
|
|
|
+ IsPreEnable = false;
|
|
|
+ }
|
|
|
+ isFromMethod = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void redo()
|
|
|
+ {
|
|
|
+ App.Current.Dispatcher.Invoke(() =>
|
|
|
+ {
|
|
|
+ UndoStack.Push(PDFViewer.CurrentIndex);
|
|
|
+ IsPreEnable = true;
|
|
|
+
|
|
|
+ int index = RedoStack.Pop();
|
|
|
+ PDFViewer.GoToPage(index);
|
|
|
+ if (RedoStack.Count <= 0)
|
|
|
+ {
|
|
|
+ IsNextEnable = false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ isFromMethod = true;
|
|
|
}
|
|
|
|
|
|
private void ShowViewModularEvent(object obj)
|
|
@@ -475,7 +560,16 @@ namespace PDF_Office.ViewModels
|
|
|
{
|
|
|
CurrentPage = renderData.PageIndex;
|
|
|
PageCount = PDFViewer.Document.PageCount;
|
|
|
+ if(!renderData.IsMouseWheel&&!isFromMethod)
|
|
|
+ {
|
|
|
+ UndoStack.Push(oldPageIndex);
|
|
|
+ RedoStack.Clear();
|
|
|
+ IsNextEnable = false;
|
|
|
+ IsPreEnable = true;
|
|
|
+ }
|
|
|
+ isFromMethod = false;
|
|
|
}
|
|
|
+ oldPageIndex = renderData.PageIndex - 1;
|
|
|
}
|
|
|
if (e.Key == "ViewMode")
|
|
|
{
|
|
@@ -488,6 +582,22 @@ namespace PDF_Office.ViewModels
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void ViewContentViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
|
|
+ {
|
|
|
+ if (e.PropertyName == "OCRContentVisible")
|
|
|
+ {
|
|
|
+ if (ViewContentViewModel.OCRContentVisible == Visibility.Visible)
|
|
|
+ {
|
|
|
+ RightPanelEnable = false;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ RightPanelEnable = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
private void GetModeView(ViewMode mode)
|
|
|
{
|
|
|
if ((int)mode % 2 == 0)
|
|
@@ -583,6 +693,7 @@ namespace PDF_Office.ViewModels
|
|
|
{
|
|
|
//获取页面设置等信息
|
|
|
PDFViewer = pdfview;
|
|
|
+ oldPageIndex = pdfview.CurrentIndex;
|
|
|
PageCount = PDFViewer.Document.PageCount;
|
|
|
GetModeView(PDFViewer.ModeView);
|
|
|
CurrentPage = PDFViewer.CurrentIndex + 1;
|
|
@@ -591,20 +702,6 @@ namespace PDF_Office.ViewModels
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void ViewContentViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
|
|
- {
|
|
|
- if(e.PropertyName == "OCRContentVisible")
|
|
|
- {
|
|
|
- if(ViewContentViewModel.OCRContentVisible == Visibility.Visible)
|
|
|
- {
|
|
|
- RightPanelEnable = false;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- RightPanelEnable = true;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
public bool IsNavigationTarget(NavigationContext navigationContext)
|
|
|
{
|