Browse Source

综合-补充Doc释放逻辑,修复关闭页签后文档仍被占用问题;调整菜单按钮打开文档逻辑

ZhouJieSheng 2 years ago
parent
commit
6e57405fb6

+ 4 - 1
PDF Office/Helper/ToolMethod.cs

@@ -161,7 +161,10 @@ namespace PDF_Office.Helper
                     MessageBoxEx.Show("LoadFile_GetThumbnailFailedWarning");
                 }
             }
-
+            if(tempdoc!=null)
+            {
+                tempdoc.Release();
+            }
         }
 
 

+ 13 - 2
PDF Office/ViewModels/MainContentViewModel.cs

@@ -79,7 +79,7 @@ namespace PDF_Office.ViewModels
 
         public DelegateCommand<object> CloseTab { get; set; }
 
-        public DelegateCommand<object> Loaded { get; set; }
+        public DelegateCommand UnLoaded { get; set; }
 
         public DelegateCommand ShowInFolderCommand { get; set; }
 
@@ -156,17 +156,28 @@ namespace PDF_Office.ViewModels
             CloseTab = new DelegateCommand<object>(CloseTabItem);
             ShowInFolderCommand = new DelegateCommand(showInFolder);
             RenameCommand = new DelegateCommand(rename);
+            UnLoaded = new DelegateCommand(unload);
 
             MainContentRegionName = Guid.NewGuid().ToString();
         }
 
+        //关闭页签
+        private void unload()
+        {
+            if(PDFViewer!=null)
+            {
+                PDFViewer.Document.Release();
+                //PDFViewer.CloseDocument();
+            }
+        }
+
         /// <summary>
         /// 执行重命名操作
         /// </summary>
         private void dorenameFile()
         {
             var folder = PDFViewer.Document.FilePath.Substring(0, PDFViewer.Document.FilePath.LastIndexOf("\\"));
-            ////File.Move(PDFViewer.Document.FilePath,Path.Combine(folder,FileName));
+            ////File.Replace(PDFViewer.Document.FilePath,Path.Combine(folder,FileName),Path.Combine(folder,"back.bak"),true);
             ///TODO:会被占用 无法操作
             IsReNameTextShow = Visibility.Collapsed;
         }

+ 45 - 0
PDF Office/ViewModels/ViewContentViewModel.cs

@@ -26,6 +26,7 @@ using DryIoc;
 using PDF_Office.Model.Dialog.ConverterDialogs;
 using static PDF_Office.Model.Dialog.ToolsDialogs.SaftyDialogs.DeleteSafetySettintgsModel;
 using PDF_Office.Views.PropertyPanel.AnnotPanel;
+using System.Linq;
 
 namespace PDF_Office.ViewModels
 {
@@ -526,6 +527,8 @@ namespace PDF_Office.ViewModels
 
         public DelegateCommand CloseWindowCommand { get; set; }
 
+        public DelegateCommand OpenFileCommand { get; set; }
+
         #endregion 命令
 
         public ViewContentViewModel(IRegionManager regionManager, IDialogService dialogService, IEventAggregator eventAggregator)
@@ -551,6 +554,7 @@ namespace PDF_Office.ViewModels
             DecryptCommand = new DelegateCommand(decrypt);
             ConvertCommand = new DelegateCommand<string>(convert);
             CloseWindowCommand = new DelegateCommand(closeWindow);
+            OpenFileCommand = new DelegateCommand(openfile);
 
             ViwerRegionName = RegionNames.ViwerRegionName;
             SplitViewerRegionName = RegionNames.Viewer_SplitRegionName;
@@ -595,6 +599,47 @@ namespace PDF_Office.ViewModels
             EnterSelectedBar("TabItemAnnotation");
         }
 
+        private void openfile()
+        {
+            OpenFileDialog openFileDialog = new OpenFileDialog();
+            openFileDialog.Filter = Properties.Resources.OpenDialogFilter;
+            openFileDialog.Multiselect = true;
+            if ((bool)openFileDialog.ShowDialog())
+            {
+                if (openFileDialog.FileNames.Count() == 1)
+                {
+                    if (App.OpenedFileList.Contains(openFileDialog.FileName))
+                    {
+                        App.mainWindowViewModel.SelectItem(openFileDialog.FileName);
+                    }
+                    else
+                    {
+                        App.mainWindowViewModel.AddTabItem(openFileDialog.FileName);
+                    }
+                    ToolMethod.SetFileThumbImg(openFileDialog.FileName);
+                }
+                else
+                {
+                    var fileList = openFileDialog.FileNames.ToList().Where(x => !App.OpenedFileList.Exists(y => y == x)).ToList();
+                    if (fileList.Count <= 0)
+                    {
+                        App.mainWindowViewModel.SelectItem(openFileDialog.FileName);
+                        return;
+                    }
+
+                    mainViewModel.OpenFile(fileList[0]);
+                    for (int i = 1; i < fileList.Count(); i++)
+                    {
+                        if (!App.OpenedFileList.Contains(fileList[i]))
+                        {
+                            App.mainWindowViewModel.AddTabItem(fileList[i]);
+                        }
+                        ToolMethod.SetFileThumbImg(fileList[i]);
+                    }
+                }
+            }
+        }
+
         /// <summary>
         /// 关闭当前窗体
         /// </summary>

+ 1 - 0
PDF Office/Views/HomePanel/RecentFiles/DocItemControl.xaml.cs

@@ -47,6 +47,7 @@ namespace PDF_Office.Views.HomePanel.RecentFiles
                     }
                     else
                     CoverImage.Source = ToolMethod.GetFileThumbImg("pack://application:,,,/Resources//FilesType/ic_propertybar_file_png_Large.png");
+                    tempdoc.Release();
                 }
                   
             }

+ 6 - 4
PDF Office/Views/MainContent.xaml

@@ -8,15 +8,17 @@
     xmlns:local="clr-namespace:PDF_Office.Views"
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
     xmlns:prism="http://prismlibrary.com/"
+    xmlns:viewmodels="clr-namespace:PDF_Office.ViewModels"
+    d:DataContext="{d:DesignInstance Type=viewmodels:MainContentViewModel}"
     d:DesignHeight="450"
     d:DesignWidth="800"
     prism:ViewModelLocator.AutoWireViewModel="True"
     mc:Ignorable="d">
-    <!--<i:Interaction.Triggers>
-        <i:EventTrigger EventName="Loaded">
-            <prism:InvokeCommandAction Command="{Binding Loaded}" CommandParameter="{Binding}" />
+    <i:Interaction.Triggers>
+        <i:EventTrigger EventName="Unloaded">
+            <prism:InvokeCommandAction Command="{Binding UnLoaded}" />
         </i:EventTrigger>
-    </i:Interaction.Triggers>-->
+    </i:Interaction.Triggers>
     <Grid>
         <ContentControl Name="ContentMain" prism:RegionManager.RegionName="{Binding MainContentRegionName}" />
     </Grid>

+ 12 - 3
PDF Office/Views/ViewContent.xaml

@@ -61,7 +61,7 @@
                     <Button.ContextMenu>
                         <ContextMenu Name="FileMenu">
                             <MenuItem
-                                Command="{Binding mainViewModel.homeContentViewModel.OpenFileCommand}"
+                                Command="{Binding OpenFileCommand}"
                                 Header="Open Files"
                                 InputGestureText="Ctrl+O" />
                             <MenuItem
@@ -77,7 +77,7 @@
                             <Separator Margin="8,0" Style="{StaticResource HorizontalSeparatorStyle}" />
                             <MenuItem Header="Create Files">
                                 <MenuItem Command="{Binding mainViewModel.homeContentViewModel.CreateBlackPDFCommand}" Header="Create Blank" />
-                                <MenuItem Command="{Binding mainViewModel.homeContentViewModel.CreateFromHtmlCommnd}" Header="Create Form Html" />
+                                <MenuItem Command="{Binding mainViewModel.homeContentViewModel.CreateFromScanner}" Header="Create Form Scanner" />
                             </MenuItem>
                             <MenuItem
                                 Command="{Binding mainViewModel.mainWindowViewModel.AddTab}"
@@ -155,7 +155,16 @@
                                 Command="{Binding SettingsCommand}"
                                 Header="Settings"
                                 InputGestureText="Ctrl+P" />
-                            <MenuItem Header="Help" />
+                            <MenuItem Header="Help">
+                                <MenuItem Header="快速教学" />
+                                <MenuItem Header="在线帮助" />
+                                <MenuItem Header="更多产品" />
+                                <MenuItem Header="免费PDF模板" />
+                                <MenuItem Header="订阅电子报" />
+                                <MenuItem Header="Powered by ComPDFKit" />
+                                <Separator Style="{StaticResource HorizontalSeparatorStyle}"/>
+                                <MenuItem Header="意见反馈" />
+                            </MenuItem>
                         </ContextMenu>
                     </Button.ContextMenu>
                 </Button>