liyijie 2 anni fa
parent
commit
d9d8752403

+ 2 - 0
PDF Office/ViewModels/EditTools/Background/BackgroundDocumentContentViewModel.cs

@@ -60,6 +60,7 @@ namespace PDF_Office.ViewModels.EditTools.Background
             set
             {
                 SetProperty(ref _currentPageIndex, value);
+
             }
         }
 
@@ -250,6 +251,7 @@ namespace PDF_Office.ViewModels.EditTools.Background
                     PDFViewer.ChangeViewMode(ViewMode.Single);
                     PDFViewer.SetMouseMode(MouseModes.Default);
                     PageRangeNumber = PDFViewer.Document.PageCount;
+                    PDFViewer.ChangeFitMode(FitMode.FitHeight);
                 }
             }
         }

+ 1 - 0
PDF Office/ViewModels/EditTools/Watermark/WatermarkCreateBaseContentViewModel.cs

@@ -139,6 +139,7 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
 
         public void SaveToCurrentTemplateList()
         {
+
             if (CurrentCreateModName == "WatermarkCreateTextContent")
             {
                 eventAggregator.GetEvent<ConfirmEditWatermarkTemplateItemEvent>().Publish(new EnumTextOrFileUnicode

+ 11 - 10
PDF Office/ViewModels/EditTools/Watermark/WatermarkCreateFileContentViewModel.cs

@@ -118,7 +118,7 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
             set
             {
                 SetProperty(ref _rotationValue, value);
-                WatermarkInfo.Rotation = ((float)RotationValue / 180) * 3.1415926f;
+                WatermarkInfo.Rotation = RotationValue;
                 eventAggregator.GetEvent<SetWatermarkEvent>().Publish(new WatermarkInfoUnicode
                 {
                     Unicode = Unicode,
@@ -134,7 +134,7 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
             set
             {
                 SetProperty(ref _opacityValue, value);
-                WatermarkInfo.Opacity = (byte)(((float)OpacityValue / 100) * 225);
+                WatermarkInfo.Opacity = (byte)OpacityValue;
                 eventAggregator.GetEvent<SetWatermarkEvent>().Publish(new WatermarkInfoUnicode
                 {
                     Unicode = Unicode,
@@ -515,8 +515,8 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
         private void InitWatermarkInfo()
         {
 
-            WatermarkInfo.Rotation = ((float)RotationValue / 180) * 3.1415926f;
-            WatermarkInfo.Opacity = (byte)(((float)OpacityValue / 100) * 225);
+            WatermarkInfo.Rotation = RotationValue;
+            WatermarkInfo.Opacity = (byte)OpacityValue ;
             WatermarkInfo.VertOffset = float.Parse(VertOffsetValue);
             WatermarkInfo.HorizOffset = float.Parse(HorizOffsetValue);
             WatermarkInfo.VerticalSpacing = float.Parse(VerticalSpacingValue);
@@ -593,8 +593,9 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
                     }
                     watermark.SetScale(0.1f);
                 }
-                watermark.SetRotation(watermarkInfo.Rotation);
-                watermark.SetOpacity(watermarkInfo.Opacity);
+                watermark.SetScale(30f);
+                watermark.SetRotation((float)((watermarkInfo.Rotation / 180) * Math.PI));
+                watermark.SetOpacity((byte)(((float)watermarkInfo.Opacity / 100) * 225));
                 watermark.SetFront(watermarkInfo.IsFront);
                 watermark.SetVertalign(watermarkInfo.WatermarkVertalign);
                 watermark.SetHorizalign(watermarkInfo.WatermarkHorizalign);
@@ -612,7 +613,7 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
         public void ConfirmEditWatermarkTemplateItem(EnumTextOrFileUnicode enumTextOrFileunicode)
         {
             EnumTextOrFile enumTextOrFile = enumTextOrFileunicode.Status;
-            if (enumTextOrFile == EnumTextOrFile.StatusFile)
+            if (enumTextOrFile == EnumTextOrFile.StatusFile && FileNameText != "")
             {
                 var watermarkItem = new WatermarkItem();
                 ConvertInfoToItem(ref watermarkItem, WatermarkInfo);
@@ -682,12 +683,12 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
             HorizontalSpacingValue = WatermarkInfo.HorizontalSpacing.ToString();
             PageRangeSelectIndex = WatermarkInfo.PageRangeIndex;
             IsFrontSelectedIndex = Convert.ToInt32(!WatermarkInfo.IsFront);
-            RotationText = ((int)((WatermarkInfo.Rotation / Math.PI) * 180)).ToString();
-            OpacityText = ((((float)WatermarkInfo.Opacity) / 225) * 100).ToString() + " %";
+            RotationText = WatermarkInfo.Rotation.ToString();
+            OpacityText = WatermarkInfo.Opacity.ToString() + " %";
             RelativeScaleText = WatermarkInfo.TextSize.ToString() + " %";
             InitLocationButtonMatrix();
             CreateFileVisible=Visibility.Visible;
-
+            IsFullValue = WatermarkInfo.Isfull;
         }
 
         public void OpenFile()

+ 102 - 101
PDF Office/ViewModels/EditTools/Watermark/WatermarkCreateTextContentViewModel.cs

@@ -175,7 +175,7 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
             set
             {
                 SetProperty(ref _rotationValue, value);
-                WatermarkInfo.Rotation = ((float)RotationValue / 180) * 3.1415926f;
+                WatermarkInfo.Rotation = RotationValue;
                 eventAggregator.GetEvent<SetWatermarkEvent>().Publish(new WatermarkInfoUnicode
                 {
                     Unicode = Unicode,
@@ -191,7 +191,7 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
             set
             {
                 SetProperty(ref _opacityValue, value);
-                WatermarkInfo.Opacity = (byte)(((float)OpacityValue / 100) * 225);
+                WatermarkInfo.Opacity = (byte)OpacityValue;
                 eventAggregator.GetEvent<SetWatermarkEvent>().Publish(new WatermarkInfoUnicode
                 {
                     Unicode = Unicode,
@@ -696,8 +696,8 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
         {
 
             WatermarkInfo.Text = TextValue;
-            WatermarkInfo.Rotation = (float)(((float)RotationValue / 180) * Math.PI);
-            WatermarkInfo.Opacity = (byte)(((float)OpacityValue / 100) * 225);
+            WatermarkInfo.Rotation = RotationValue;
+            WatermarkInfo.Opacity = (byte)OpacityValue;
             WatermarkInfo.VertOffset = float.Parse(VertOffsetValue);
             WatermarkInfo.HorizOffset = float.Parse(HorizOffsetValue);
             WatermarkInfo.VerticalSpacing = float.Parse(VerticalSpacingValue);
@@ -726,130 +726,131 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
             FontNameSelectedIndex = FontNameList.IndexOf(WatermarkInfo.FontName);
             FontSizeSelectedIndex = FontSizeList.IndexOf(((int)(WatermarkInfo.TextSize / 1.33f)).ToString() + "pt");
             IsFrontSelectedIndex = Convert.ToInt32(!WatermarkInfo.IsFront);
-            RotationText = ((int)((WatermarkInfo.Rotation/ Math.PI) *180)).ToString();
-            OpacityText = ((((float)WatermarkInfo.Opacity)/225)*100).ToString() + " %";
+            RotationText = WatermarkInfo.Rotation.ToString();
+            OpacityText = WatermarkInfo.Opacity.ToString() + " %";
             RelativeScaleText = WatermarkInfo.TextSize.ToString() + " %";
+            IsFullValue = WatermarkInfo.Isfull;
             InitLocationButtonMatrix();
 
         }
-            public void CreateWatermark(CPDFDocument document, WatermarkInfo watermarkInfo)
+        public void CreateWatermark(CPDFDocument document, WatermarkInfo watermarkInfo)
+        {
+            if (watermarkInfo != null)
             {
-                if (watermarkInfo != null)
+                document.DeleteWatermarks();
+                CPDFWatermark watermark;
+                if (watermarkInfo.WatermarkType == C_Watermark_Type.WATERMARK_TYPE_TEXT)
+                {
+                    watermark = document.InitWatermark(C_Watermark_Type.WATERMARK_TYPE_TEXT);
+                    watermark.SetText(watermarkInfo.Text);
+                    watermark.SetFontName(watermarkInfo.FontName);
+                    watermark.SetFontSize(watermarkInfo.TextSize);
+                    watermark.SetTextRGBColor(watermarkInfo.TextColor);
+                }
+                else
                 {
-                    document.DeleteWatermarks();
-                    CPDFWatermark watermark;
-                    if (watermarkInfo.WatermarkType == C_Watermark_Type.WATERMARK_TYPE_TEXT)
+                    watermark = document.InitWatermark(C_Watermark_Type.WATERMARK_TYPE_IMG);
+                    if (watermarkInfo.ImageArray != null)
                     {
-                        watermark = document.InitWatermark(C_Watermark_Type.WATERMARK_TYPE_TEXT);
-                        watermark.SetText(watermarkInfo.Text);
-                        watermark.SetFontName(watermarkInfo.FontName);
-                        watermark.SetFontSize(watermarkInfo.TextSize);
-                        watermark.SetTextRGBColor(watermarkInfo.TextColor);
+                        watermark.SetImage(watermarkInfo.ImageArray, watermarkInfo.ImageWidth, watermarkInfo.ImageHeight);
                     }
-                    else
-                    {
-                        watermark = document.InitWatermark(C_Watermark_Type.WATERMARK_TYPE_IMG);
-                        if (watermarkInfo.ImageArray != null)
-                        {
-                            watermark.SetImage(watermarkInfo.ImageArray, watermarkInfo.ImageWidth, watermarkInfo.ImageHeight);
-                        }
-                        watermark.SetScale(0.1f);
-                    }
-                    watermark.SetRotation(watermarkInfo.Rotation);
-                    watermark.SetOpacity(watermarkInfo.Opacity);
-                    watermark.SetFront(watermarkInfo.IsFront);
-                    watermark.SetVertalign(watermarkInfo.WatermarkVertalign);
-                    watermark.SetHorizalign(watermarkInfo.WatermarkHorizalign);
-                    watermark.SetFullScreen(watermarkInfo.Isfull);
-                    watermark.SetVertOffset(watermarkInfo.VertOffset);
-                    watermark.SetHorizOffset(watermarkInfo.HorizOffset);
-                    watermark.SetHorizontalSpacing(watermarkInfo.HorizontalSpacing);
-                    watermark.SetVerticalSpacing(watermarkInfo.VerticalSpacing);
-                    watermark.SetPages("0");
-                    Trace.WriteLine("IsCreateWatermark: " + watermark.CreateWatermark());
-                    Trace.WriteLine("IsUpdateWatermark: " + watermark.UpdateWatermark());
+                    watermark.SetScale(0.1f);
                 }
+                watermark.SetRotation((float)((watermarkInfo.Rotation / 180) * Math.PI));
+                watermark.SetOpacity((byte)(((float)watermarkInfo.Opacity / 100) * 225));
+                watermark.SetFront(watermarkInfo.IsFront);
+                watermark.SetVertalign(watermarkInfo.WatermarkVertalign);
+                watermark.SetHorizalign(watermarkInfo.WatermarkHorizalign);
+                watermark.SetFullScreen(watermarkInfo.Isfull);
+                watermark.SetVertOffset(watermarkInfo.VertOffset);
+                watermark.SetHorizOffset(watermarkInfo.HorizOffset);
+                watermark.SetHorizontalSpacing(watermarkInfo.HorizontalSpacing);
+                watermark.SetVerticalSpacing(watermarkInfo.VerticalSpacing);
+                watermark.SetPages("0");
+                Trace.WriteLine("IsCreateWatermark: " + watermark.CreateWatermark());
+                Trace.WriteLine("IsUpdateWatermark: " + watermark.UpdateWatermark());
             }
+        }
 
-            public void ConfirmEditWatermarkTemplateItem(EnumTextOrFileUnicode enumTextOrFileunicode)
+        public void ConfirmEditWatermarkTemplateItem(EnumTextOrFileUnicode enumTextOrFileunicode)
+        {
+            EnumTextOrFile enumTextOrFile = enumTextOrFileunicode.Status;
+            if (enumTextOrFile == EnumTextOrFile.StatusText)
             {
-                EnumTextOrFile enumTextOrFile = enumTextOrFileunicode.Status;
-                if (enumTextOrFile == EnumTextOrFile.StatusText)
+                var watermarkItem = new WatermarkItem();
+                ConvertInfoToItem(ref watermarkItem, WatermarkInfo);
+                try
                 {
-                    var watermarkItem = new WatermarkItem();
-                    ConvertInfoToItem(ref watermarkItem, WatermarkInfo);
-                    try
+                    //创建缓存文件夹
+                    string folderPath = Path.Combine(App.CurrentPath, "Watermark");
+                    //有可能因为其他原因存在同名文件,导致创建文件夹失败,需要先删除同名文件
+                    //保险措施(猜测)
+                    if (File.Exists(folderPath))
                     {
-                        //创建缓存文件夹
-                        string folderPath = Path.Combine(App.CurrentPath, "Watermark");
-                        //有可能因为其他原因存在同名文件,导致创建文件夹失败,需要先删除同名文件
-                        //保险措施(猜测)
-                        if (File.Exists(folderPath))
-                        {
-                            File.Delete(folderPath);
-                        }
-
-                        DirectoryInfo tempfolder = new DirectoryInfo(folderPath);
-                        if (!tempfolder.Exists)
-                        {
-                            tempfolder.Create();
-                        }
-
-                        //预览图缓存
-                        string saveName = Guid.NewGuid().ToString();
-                        string savePath = Path.Combine(folderPath, saveName);
-                        System.Windows.Size pageSize = new System.Windows.Size { Width = 128, Height = 160 };
-                        CPDFDocument tempDocument = CPDFDocument.CreateDocument();
-                        if (tempDocument != null)
-                        {
-                            tempDocument.InsertPage(0, pageSize.Width, pageSize.Height, null);
-                            CreateWatermark(tempDocument, WatermarkInfo);
+                        File.Delete(folderPath);
+                    }
 
-                            //获取透明背景的图片
-                            var bitmap = ToolMethod.RenderPageBitmapNoWait(tempDocument, (int)pageSize.Width, (int)pageSize.Height, 0, false, false, 0x00FFFFFF);
-                            using (FileStream stream = new FileStream(savePath, FileMode.Create))
-                            {
-                                bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
-                            }
+                    DirectoryInfo tempfolder = new DirectoryInfo(folderPath);
+                    if (!tempfolder.Exists)
+                    {
+                        tempfolder.Create();
+                    }
 
-                            watermarkItem.previewImagePath = savePath;
-                            tempDocument.Release();
+                    //预览图缓存
+                    string saveName = Guid.NewGuid().ToString();
+                    string savePath = Path.Combine(folderPath, saveName);
+                    System.Windows.Size pageSize = new System.Windows.Size { Width = 128, Height = 160 };
+                    CPDFDocument tempDocument = CPDFDocument.CreateDocument();
+                    if (tempDocument != null)
+                    {
+                        tempDocument.InsertPage(0, pageSize.Width, pageSize.Height, null);
+                        CreateWatermark(tempDocument, WatermarkInfo);
 
-                            Settings.Default.WatermarkTemplateList[TemplateWatermarkItem.listIndex] = watermarkItem;
-                            Settings.Default.Save();
+                        //获取透明背景的图片
+                        var bitmap = ToolMethod.RenderPageBitmapNoWait(tempDocument, (int)pageSize.Width, (int)pageSize.Height, 0, false, false, 0x00FFFFFF);
+                        using (FileStream stream = new FileStream(savePath, FileMode.Create))
+                        {
+                            bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
                         }
-                    }
-                    catch
-                    {
 
+                        watermarkItem.previewImagePath = savePath;
+                        tempDocument.Release();
+
+                        Settings.Default.WatermarkTemplateList[TemplateWatermarkItem.listIndex] = watermarkItem;
+                        Settings.Default.Save();
                     }
-                    this.eventAggregator.GetEvent<EnterTemplateListOrCreateEvent>().Publish(new EnumTemplateListOrCreateUnicode
-                    {
-                        Unicode = Unicode,
-                        Status = EnumTemplateListOrCreate.StatusTemplate
-                    });
+                }
+                catch
+                {
 
                 }
-            }
+                this.eventAggregator.GetEvent<EnterTemplateListOrCreateEvent>().Publish(new EnumTemplateListOrCreateUnicode
+                {
+                    Unicode = Unicode,
+                    Status = EnumTemplateListOrCreate.StatusTemplate
+                });
 
-            public bool IsNavigationTarget(NavigationContext navigationContext)
-            {
-                return true;
             }
+        }
 
-            public void OnNavigatedFrom(NavigationContext navigationContext)
-            {
-            }
+        public bool IsNavigationTarget(NavigationContext navigationContext)
+        {
+            return true;
+        }
 
-            public void OnNavigatedTo(NavigationContext navigationContext)
-            {
-                navigationContext.Parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer, out PDFViewer);
-                EditToolsHelper.GetPageRange(PageRangeSelectIndex, PDFViewer.Document, ref WatermarkInfo.PageRange, PageRangeText);
-                if (navigationContext.Parameters.TryGetValue<WatermarkItem>("WatermarkItem", out TemplateWatermarkItem))
-                {
-                    InitComponentBySelectedInfo();
-                }
+        public void OnNavigatedFrom(NavigationContext navigationContext)
+        {
+        }
 
+        public void OnNavigatedTo(NavigationContext navigationContext)
+        {
+            navigationContext.Parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer, out PDFViewer);
+            EditToolsHelper.GetPageRange(PageRangeSelectIndex, PDFViewer.Document, ref WatermarkInfo.PageRange, PageRangeText);
+            if (navigationContext.Parameters.TryGetValue<WatermarkItem>("WatermarkItem", out TemplateWatermarkItem))
+            {
+                InitComponentBySelectedInfo();
             }
+
         }
     }
+}

+ 71 - 4
PDF Office/ViewModels/EditTools/Watermark/WatermarkDocumentContentViewModel.cs

@@ -27,6 +27,8 @@ using System.Windows.Controls;
 using ComPDFKit.Import;
 using PDF_Office.ViewModels.Tools;
 using static System.Windows.Forms.VisualStyles.VisualStyleElement;
+using System.Text.RegularExpressions;
+using TextBox = System.Windows.Controls.TextBox;
 
 namespace PDF_Office.ViewModels.EditTools.Watermark
 {
@@ -48,12 +50,47 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
 
         public string ViewerRegionName { get; set; }
 
+        private int _pageRangeNumber;
+        public int PageRangeNumber
+        {
+            get { return _pageRangeNumber; }
+            set { SetProperty(ref _pageRangeNumber, value); }
+        }
+
+        private Visibility _inputIndexBoxVisible = Visibility.Collapsed;
+        public Visibility InputIndexBoxVisible
+        {
+            get
+            {
+                return _inputIndexBoxVisible;
+            }
+            set
+            {
+                SetProperty(ref _inputIndexBoxVisible, value);
+            }
+        }
+
+        private int _currentPageIndex;
+        public int CurrentPageIndex
+        {
+            get { return _currentPageIndex; }
+            set
+            {
+                SetProperty(ref _currentPageIndex, value);
+
+            }
+        }
+        public DelegateCommand<object> ShowInputIndexBoxCommand { set; get; }
+        public DelegateCommand<object> GoToPageCommand { set; get; }
+
         public string Unicode = null;
 
         public WatermarkDocumentContentViewModel(IEventAggregator eventAggregator, IRegionManager regionManager)
         {
             this.regionManager = regionManager;
             this.eventAggregator = eventAggregator;
+            ShowInputIndexBoxCommand = new DelegateCommand<object>(ShowInputIndexBox);
+            GoToPageCommand = new DelegateCommand<object>(GoToPage);
             Unicode = App.mainWindowViewModel.SelectedItem.Unicode;
             eventAggregator.GetEvent<SetWatermarkEvent>().Subscribe(SetWatermark, e => e.Unicode == Unicode);
             ViewerRegionName = RegionNames.WatermarkViwerRegionName;
@@ -61,6 +98,32 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
             eventAggregator.GetEvent<DeleteWatermarkEvent>().Subscribe(DeleteWatermark, e => e.Unicode == Unicode);
         }
 
+        public void ShowInputIndexBox(object obj)
+        {
+            if (obj != null)
+            {
+                InputIndexBoxVisible = Visibility.Visible;
+            }
+        }
+
+        public void GoToPage(object obj)
+        {
+
+            if (obj != null)
+            {
+                var args = obj as TextBox;
+                if (args.Text == null || !Regex.Match(args.Text, "^\\d+$").Success)
+                {
+                    return;
+                }
+                if (int.Parse(args.Text) > 0 && int.Parse(args.Text) <= PDFViewer.Document.PageCount )
+                {
+                    PDFViewer.GoToPage(int.Parse(args.Text) - 1);
+                    InputIndexBoxVisible = Visibility.Collapsed;
+                }
+            }
+        }
+
         public void ConfirmEditToolsWatermark()
         {
             if (EnumDelete == EnumDelete.StatusDeleteAll)
@@ -128,8 +191,8 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
                     }
                     watermark.SetScale(0.1f);
                 }
-                watermark.SetRotation(watermarkInfo.Rotation);
-                watermark.SetOpacity(watermarkInfo.Opacity);
+                watermark.SetRotation((float)((watermarkInfo.Rotation / 180) *Math.PI ));
+                watermark.SetOpacity((byte)(((float)watermarkInfo.Opacity/ 100) * 225));
                 watermark.SetFront(watermarkInfo.IsFront);
                 watermark.SetVertalign(watermarkInfo.WatermarkVertalign);
                 watermark.SetHorizalign(watermarkInfo.WatermarkHorizalign);
@@ -187,6 +250,7 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
                     }
                 }
             }
+            CurrentPageIndex = PDFViewer.CurrentIndex + 1;
         }
         private WriteableBitmap GetWatermark(CPDFDocument oldDoc, double zoom, int pageIndex)
         {
@@ -197,10 +261,10 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
             CreateWatermark(newDoc, true);
             CPDFPage newPage = newDoc.PageAtIndex(0);
             double scale = 96.0 / 72.0;
-            zoom = zoom * scale;
+            zoom =   zoom * 1.5;
             Rect renderRect = new Rect(0, 0, (int)(pageSize.Width * scale), (int)(pageSize.Height * scale));
             byte[] imageArray = new byte[(int)(renderRect.Width * renderRect.Height * 4)];
-            newPage.RenderPageBitmapWithMatrix((float)zoom, renderRect, 0x00FFFFFF, imageArray, 1, true);
+            newPage.RenderPageBitmapWithMatrix(1/(float)zoom, renderRect, 0x00FFFFFF, imageArray, 1, true);
             WriteableBitmap WirteBitmap = new WriteableBitmap((int)renderRect.Width, (int)renderRect.Height, 96, 96, PixelFormats.Bgra32, null);
             WirteBitmap.WritePixels(new Int32Rect(0, 0, (int)renderRect.Width, (int)renderRect.Height), imageArray, WirteBitmap.BackBufferStride, 0);
             return WirteBitmap;
@@ -240,6 +304,9 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
                         Unicode = Unicode,
                         Status = PDFViewer
                     });
+                    PageRangeNumber = PDFViewer.Document.PageCount;
+                    PDFViewer.Zoom(0.5);
+
                 }
             }
         }

+ 50 - 50
PDF Office/Views/EditTools/HeaderFooter/HeaderFooterCreateContent.xaml

@@ -1,56 +1,56 @@
 <UserControl x:Class="PDF_Office.Views.EditTools.HeaderFooter.HeaderFooterCreateContent"
-             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:prism="http://prismlibrary.com/"             
-             prism:ViewModelLocator.AutoWireViewModel="True"
-              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
-             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
-             xmlns:cus="clr-namespace:PDF_Office.CustomControl"
-             xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
-             xmlns:CompositeControl="clr-namespace:PDF_Office.CustomControl.CompositeControl"
-             mc:Ignorable="d"
-             d:DesignHeight="720"
-             d:DesignWidth="260" >
-    <Grid>
-        <Grid.RowDefinitions>
-            <RowDefinition Height="40"></RowDefinition>
-            <RowDefinition></RowDefinition>
-        </Grid.RowDefinitions>
-        <Grid Grid.Row="0" Visibility="{Binding CreateBaseVisible, Mode=TwoWay}">
-            <Button  Height="24" Width="90" HorizontalAlignment="Left" Margin="16,0,0,0"  Command="{Binding EnterTemplateListCommand}">
-                <StackPanel Orientation="Horizontal">
-                    <TextBlock Text="&lt;" Margin="0,0,9,0" FontSize="16"></TextBlock>
-                    <TextBlock Text="创建页眉页脚" FontSize="16"></TextBlock>
-                </StackPanel>
-            </Button>
-            <Button  Height="20" Width="64" Margin="0,0,16,0" HorizontalAlignment="Right" Command="{Binding SaveToTemplateListCommand}">
-                <StackPanel>
-                    <TextBlock Text="保存至模板"  Foreground="#18A0FB"></TextBlock>
-                    <Rectangle Height="1" Fill="#18A0FB"></Rectangle>
-                </StackPanel>
-            </Button>
-        </Grid>
-        <Grid Grid.Row="0" Visibility="{Binding EditBaseVisible, Mode=TwoWay}">
-            <Button  Height="24" Width="90" HorizontalAlignment="Left" Margin="16,0,0,0"  Command="{Binding EnterTemplateListCommand}">
-                <StackPanel Orientation="Horizontal">
-                    <TextBlock Text="&lt;" Margin="0,0,9,0" FontSize="16"></TextBlock>
-                    <TextBlock Text="编辑模板" FontSize="16"></TextBlock>
-                </StackPanel>
-            </Button>
-            <Button  Height="20" Width="64" Margin="0,0,16,0" HorizontalAlignment="Right" Command="{Binding SaveToCurrentTemplateListCommand}">
-                <StackPanel>
-                    <TextBlock Text="保存"  Foreground="#18A0FB"></TextBlock>
-                    <Rectangle Height="1" Fill="#18A0FB"></Rectangle>
-                </StackPanel>
-            </Button>
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:prism="http://prismlibrary.com/"             
+             prism:ViewModelLocator.AutoWireViewModel="True"
+              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:cus="clr-namespace:PDF_Office.CustomControl"
+             xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
+             xmlns:CompositeControl="clr-namespace:PDF_Office.CustomControl.CompositeControl"
+             mc:Ignorable="d"
+             d:DesignHeight="720"
+             d:DesignWidth="260" >
+    <Grid>
+        <Grid.RowDefinitions>
+            <RowDefinition Height="40"></RowDefinition>
+            <RowDefinition></RowDefinition>
+        </Grid.RowDefinitions>
+        <Grid Grid.Row="0" Visibility="{Binding CreateBaseVisible, Mode=TwoWay}">
+            <Button  Height="24" Width="90" HorizontalAlignment="Left" Margin="16,0,0,0"  Command="{Binding EnterTemplateListCommand}">
+                <StackPanel Orientation="Horizontal">
+                    <TextBlock Text="&lt;" Margin="0,0,9,0" FontSize="16"></TextBlock>
+                    <TextBlock Text="创建页眉页脚" FontSize="16"></TextBlock>
+                </StackPanel>
+            </Button>
+            <Button  Height="20" Width="64" Margin="0,0,16,0" HorizontalAlignment="Right" Command="{Binding SaveToTemplateListCommand}">
+                <StackPanel>
+                    <TextBlock Text="保存至模板"  Foreground="#18A0FB"></TextBlock>
+                    <Rectangle Height="1" Fill="#18A0FB"></Rectangle>
+                </StackPanel>
+            </Button>
+        </Grid>
+        <Grid Grid.Row="0" Visibility="{Binding EditBaseVisible, Mode=TwoWay}">
+            <Button  Height="24" Width="90" HorizontalAlignment="Left" Margin="16,0,0,0"  Command="{Binding EnterTemplateListCommand}">
+                <StackPanel Orientation="Horizontal">
+                    <TextBlock Text="&lt;" Margin="0,0,9,0" FontSize="16"></TextBlock>
+                    <TextBlock Text="编辑模板" FontSize="16"></TextBlock>
+                </StackPanel>
+            </Button>
+            <Button  Height="20" Width="64" Margin="0,0,16,0" HorizontalAlignment="Right" Command="{Binding SaveToCurrentTemplateListCommand}">
+                <StackPanel>
+                    <TextBlock Text="保存"  Foreground="#18A0FB"></TextBlock>
+                    <Rectangle Height="1" Fill="#18A0FB"></Rectangle>
+                </StackPanel>
+            </Button>
         </Grid>
         <Grid Grid.Row="1">
-            <Grid.RowDefinitions>
-                <RowDefinition Height="116"></RowDefinition>
-                <RowDefinition Height="116"></RowDefinition>
-                <RowDefinition Height="128"></RowDefinition>
-                <RowDefinition Height="172"></RowDefinition>
-                <RowDefinition></RowDefinition>
+            <Grid.RowDefinitions>
+                <RowDefinition Height="116"></RowDefinition>
+                <RowDefinition Height="116"></RowDefinition>
+                <RowDefinition Height="128"></RowDefinition>
+                <RowDefinition Height="172"></RowDefinition>
+                <RowDefinition></RowDefinition>
             </Grid.RowDefinitions>
             <Grid Grid.Row="0" Margin="0,16,0,0" Width="228">
                 <StackPanel>

+ 19 - 19
PDF Office/Views/EditTools/Watermark/WatermarkDocumentContent.xaml

@@ -1,6 +1,7 @@
 <UserControl x:Class="PDF_Office.Views.EditTools.Watermark.WatermarkDocumentContent"
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
              xmlns:prism="http://prismlibrary.com/"             
              prism:ViewModelLocator.AutoWireViewModel="True"
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
@@ -13,25 +14,24 @@
                 x:Name="PDFViewerContent"
                 HorizontalAlignment="Stretch"
                 prism:RegionManager.RegionName="{Binding ViewerRegionName}" />
-        <Border  Height="64" Width="293" HorizontalAlignment="Center"  VerticalAlignment="Bottom"  Panel.ZIndex="1" Margin="9" Background="#323232" CornerRadius="4">
-            <Grid>
-                <StackPanel Orientation="Horizontal"  VerticalAlignment="Center">
-                    <StackPanel Orientation="Horizontal">
-                        <TextBlock Text="-" FontSize="20" Foreground="White" Margin="20,0,20,0"></TextBlock>
-                        <TextBlock Text="+" FontSize="20" Foreground="White" Margin="0,0,39,0"></TextBlock>
-                    </StackPanel>
-                    <StackPanel Orientation="Horizontal">
-                        <TextBlock Text="1" FontSize="20" Foreground="White" Margin="0,0,24,0"></TextBlock>
-                        <TextBlock Text="/" FontSize="20" Foreground="White" Margin="0,0,24,0"></TextBlock>
-                        <TextBlock Text="20" FontSize="20" Foreground="White" Margin="0,0,24,0"></TextBlock>
-                    </StackPanel>
-                    <StackPanel Orientation="Horizontal">
-                        <TextBlock Text="↑" FontSize="20" Foreground="White" Margin="20,0,20,0"></TextBlock>
-                        <TextBlock Text="↓" FontSize="20" Foreground="White"></TextBlock>
-
-                    </StackPanel>
-                </StackPanel>
-            </Grid>
+        <Border CornerRadius="4" Background="#323232"  HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="41,0,0,25" Height="53" Width="93"  Panel.ZIndex="1" >
+            <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" >
+                <Grid>
+                    <Button  Name="ShowInputIndexBoxBtn" Background="Transparent" BorderThickness="0" Padding="0">
+                        <Label  Content="{Binding CurrentPageIndex, Mode=TwoWay}" Foreground="White" FontSize="20"></Label>
+                        <i:Interaction.Triggers>
+                            <i:EventTrigger EventName="MouseDoubleClick">
+                                <i:InvokeCommandAction Command="{Binding ShowInputIndexBoxCommand}" CommandParameter="{Binding ElementName=ShowInputIndexBoxBtn}"/>
+                            </i:EventTrigger>
+                        </i:Interaction.Triggers>
+                    </Button>
+                    <TextBox Name="CurrentPageIndexBox" Visibility="{Binding InputIndexBoxVisible}" KeyDown="CurrentPageIndexBox_KeyDown" VerticalContentAlignment="Center">
+
+                    </TextBox>
+                </Grid>
+                <TextBlock Text="/" Foreground="White" FontSize="20" VerticalAlignment="Center" Margin="2,0,2,0"></TextBlock>
+                <TextBlock  Text="{Binding PageRangeNumber, Mode=TwoWay}" FontSize="20"  Foreground="White" VerticalAlignment="Center"></TextBlock>
+            </StackPanel>
         </Border>
     </Grid>
 </UserControl>

+ 10 - 1
PDF Office/Views/EditTools/Watermark/WatermarkDocumentContent.xaml.cs

@@ -1,4 +1,5 @@
-using System.Windows.Controls;
+using PDF_Office.ViewModels.EditTools.Watermark;
+using System.Windows.Controls;
 
 namespace PDF_Office.Views.EditTools.Watermark
 {
@@ -11,5 +12,13 @@ namespace PDF_Office.Views.EditTools.Watermark
         {
             InitializeComponent();
         }
+        private void CurrentPageIndexBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
+        {
+            if (e.Key == System.Windows.Input.Key.Enter)
+            {
+                var data = this.DataContext as WatermarkDocumentContentViewModel;
+                data.GoToPageCommand?.Execute(sender);
+            }
+        }
     }
 }