Browse Source

compdfkit demo(windows) - 多页签 TitleBar

liuaoran 1 year ago
parent
commit
23286c3336
25 changed files with 206 additions and 172 deletions
  1. 4 0
      compdfkit_demo_windows/compdfkit/compdfkit-tools/Annotation/PDFAnnotationPanel/PDFAnnotationControl/CPDFAnnotationControl.xaml.cs
  2. BIN
      compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Arrow.png
  3. BIN
      compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Freehand.png
  4. BIN
      compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Freetext.png
  5. BIN
      compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Highlight.png
  6. BIN
      compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Link.png
  7. BIN
      compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Note.png
  8. BIN
      compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Rect.png
  9. BIN
      compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Round.png
  10. BIN
      compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Sharp.png
  11. BIN
      compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Signature.png
  12. BIN
      compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Sound.png
  13. BIN
      compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Squiggly.png
  14. BIN
      compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Stamp.png
  15. BIN
      compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/StraightLine.png
  16. BIN
      compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Strikeout.png
  17. BIN
      compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Underline.png
  18. 6 2
      compdfkit_demo_windows/compdfkit/compdfkit-tools/Common/BarControl/CPDFAnnotationBarControl.xaml
  19. 6 5
      compdfkit_demo_windows/compdfkit/compdfkit-tools/Common/BarControl/CPDFAnnotationBarControl.xaml.cs
  20. 1 1
      compdfkit_demo_windows/compdfkit/compdfkit-tools/Common/BarControl/CPDFTitleBarControl.xaml
  21. 15 12
      compdfkit_demo_windows/compdfkit/compdfkit-tools/Common/BarControl/CPDFTitleBarControl.xaml.cs
  22. 0 50
      compdfkit_demo_windows/compdfkit/compdfkit-tools/compdfkit-tools.csproj
  23. 9 6
      compdfkit_demo_windows/compdfkit/compdfkit/MainPage.xaml
  24. 86 37
      compdfkit_demo_windows/compdfkit/compdfkit/MainPage.xaml.cs
  25. 79 59
      compdfkit_demo_windows/compdfkit/compdfkit/MainWindow.xaml.cs

+ 4 - 0
compdfkit_demo_windows/compdfkit/compdfkit-tools/Annotation/PDFAnnotationPanel/PDFAnnotationControl/CPDFAnnotationControl.xaml.cs

@@ -118,6 +118,10 @@ namespace compdfkit_tools.PDFControl
                         tempUI.SetPresentAnnotAttrib(oldEvent);
                     }
                 }
+                if (e[0].EditAction == ActionType.Add && e[0].EditAnnotArgs.EventType == AnnotArgsType.AnnotStamp)
+                {
+                    pdfViewer.SetMouseMode(MouseModes.PanTool);
+                }
             }
         }
 

BIN
compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Arrow.png


BIN
compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Freehand.png


BIN
compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Freetext.png


BIN
compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Highlight.png


BIN
compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Link.png


BIN
compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Note.png


BIN
compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Rect.png


BIN
compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Round.png


BIN
compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Sharp.png


BIN
compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Signature.png


BIN
compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Sound.png


BIN
compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Squiggly.png


BIN
compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Stamp.png


BIN
compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/StraightLine.png


BIN
compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Strikeout.png


BIN
compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Resource/Annotation/Underline.png


+ 6 - 2
compdfkit_demo_windows/compdfkit/compdfkit-tools/Common/BarControl/CPDFAnnotationBarControl.xaml

@@ -5,8 +5,12 @@
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              mc:Ignorable="d" 
              d:DesignHeight="40" d:DesignWidth="1280">
-    <UserControl.Resources>
-        <ResourceDictionary Source="../../Asset/Theme/LightMode.xaml"></ResourceDictionary>
+        <UserControl.Resources>
+        <ResourceDictionary>
+            <ResourceDictionary.MergedDictionaries>
+                <ResourceDictionary Source="pack://application:,,,/compdfkit-assets;component/Styles/ToggleButtonStyle.xaml"></ResourceDictionary>
+            </ResourceDictionary.MergedDictionaries>
+        </ResourceDictionary>
     </UserControl.Resources>
     <Border Background="#F2F3F5" Padding="0,2,0,2">
         <Grid  Name="AnnotationGrid" Width="0"></Grid>

+ 6 - 5
compdfkit_demo_windows/compdfkit/compdfkit-tools/Common/BarControl/CPDFAnnotationBarControl.xaml.cs

@@ -23,7 +23,6 @@ namespace compdfkit_tools.PDFControl
     public partial class CPDFAnnotationBarControl : UserControl
     {
         private int annotationCounter = 0;
-        private Brush brush = null;
 
         public event EventHandler<CPDFAnnotationType> AnnotationPropertyChanged;
         public event EventHandler AnnotationCancel;
@@ -35,9 +34,12 @@ namespace compdfkit_tools.PDFControl
 
         private void CreateAnnotationButton(ToggleButton toggleButton)
         {
-            toggleButton.Width = 50;
-            toggleButton.Background = Brushes.Transparent;
-            toggleButton.BorderBrush = Brushes.Transparent;
+            Style style = (Style)FindResource("RoundMarginToggleButtonStyle");
+            toggleButton.BorderThickness = new Thickness(0);
+            toggleButton.Height = 50;
+            toggleButton.Style = style;
+            toggleButton.VerticalAlignment = VerticalAlignment.Center;
+
             Geometry annotationGeometry = Geometry.Parse("");
             Canvas canvas = new Canvas();
             if (toggleButton.Tag.ToString() == CPDFAnnotationType.Highlight.ToString())
@@ -340,7 +342,6 @@ namespace compdfkit_tools.PDFControl
 
         public void InitAnnotationBar(CPDFAnnotationType[] annotationProperties)
         {
-            brush = (Brush)FindResource("btn.bg.bota");
             for (int i = 0; i < annotationProperties.Length; i++)
             {
                 AnnotationGrid.ColumnDefinitions.Add(new ColumnDefinition());

+ 1 - 1
compdfkit_demo_windows/compdfkit/compdfkit-tools/Common/BarControl/CPDFTitleBarControl.xaml

@@ -23,7 +23,7 @@
                     
                     <MenuItem Header="File" Style="{StaticResource Dropdown_MenuItem}">
                         <MenuItem Header="Open File" Name="OpenFileItem" Style="{StaticResource Sub_MenuItem}" Click="OpenFileItem_Click"></MenuItem>
-                        <MenuItem Header="Save File" Style="{StaticResource Sub_MenuItem}"  Click="SaveFileItem_Click" IsEnabled="False"></MenuItem>
+                        <MenuItem Header="Save File" Style="{StaticResource Sub_MenuItem}"  Click="SaveFileItem_Click" IsEnabled="{Binding CanSave, RelativeSource={RelativeSource AncestorType=UserControl}}"></MenuItem>
                         <MenuItem Header="Save As" Style="{StaticResource Sub_MenuItem}"  Click="SaveAsItem_Click"></MenuItem>
                     </MenuItem>
                     

+ 15 - 12
compdfkit_demo_windows/compdfkit/compdfkit-tools/Common/BarControl/CPDFTitleBarControl.xaml.cs

@@ -23,7 +23,18 @@ namespace compdfkit_tools.PDFControl
     /// 
     public partial class CPDFTitleBarControl : UserControl
     {
-        public event EventHandler<string> OpenFileEvent;
+        public static readonly DependencyProperty CanSaveProperty =
+            DependencyProperty.RegisterAttached("CanSave", typeof(bool), typeof(CPDFTitleBarControl), new PropertyMetadata(false));
+        public bool CanSave
+        {
+            get { return (bool)GetValue(CanSaveProperty); }
+            set { SetValue(CanSaveProperty, value); }
+        }
+
+
+        public event EventHandler OpenFileEvent;
+        public event EventHandler SaveFileEvent;
+        public event EventHandler SaveAsFileEvent;
 
         public CPDFTitleBarControl()
         {
@@ -32,25 +43,17 @@ namespace compdfkit_tools.PDFControl
 
         private void OpenFileItem_Click(object sender, RoutedEventArgs e)
         {
-            var fileItem = sender as MenuItem;
-            if (fileItem != null)
-            {
-                string filePath = CommonHelper.GetFilePathOrEmpty();
-                if (!string.IsNullOrEmpty(filePath))
-                {
-                    OpenFileEvent?.Invoke(sender, filePath);
-                }
-            }
+            OpenFileEvent?.Invoke(sender, RoutedEventArgs.Empty);
         }
 
         private void SaveFileItem_Click(object sender, RoutedEventArgs e)
         {
-
+            SaveFileEvent?.Invoke(sender, RoutedEventArgs.Empty);
         }
 
         private void SaveAsItem_Click(object sender, RoutedEventArgs e)
         {
-
+            SaveAsFileEvent?.Invoke(sender, RoutedEventArgs.Empty); 
         }
 
         private void AboutUsItem_Click(object sender, RoutedEventArgs e)

+ 0 - 50
compdfkit_demo_windows/compdfkit/compdfkit-tools/compdfkit-tools.csproj

@@ -390,9 +390,6 @@
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
   </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Asset\Resource\Annotation\Rect.png" />
-  </ItemGroup>
   <ItemGroup>
     <Page Include="Annotation\CPDFAnnotationPreviewerControl.xaml">
       <SubType>Designer</SubType>
@@ -747,53 +744,6 @@
       <Generator>MSBuild:Compile</Generator>
     </Page>
   </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Asset\Resource\Annotation\Highlight.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Resource>
-  </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Asset\Resource\Annotation\Underline.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Asset\Resource\Annotation\Strikeout.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Asset\Resource\Annotation\Squiggly.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Asset\Resource\Annotation\Note.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Asset\Resource\Annotation\Sharp.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Asset\Resource\Annotation\Freetext.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Asset\Resource\Annotation\Stamp.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Asset\Resource\Annotation\Signature.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Asset\Resource\Annotation\Freehand.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Asset\Resource\Annotation\Link.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Asset\Resource\Annotation\Sound.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Asset\Resource\Annotation\Round.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Asset\Resource\Annotation\StraightLine.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Asset\Resource\Annotation\Arrow.png" />
-  </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\compdfkit-assets\compdfkit-assets.csproj">
       <Project>{9b25b167-4896-40e3-a423-7a02cef3005e}</Project>

+ 9 - 6
compdfkit_demo_windows/compdfkit/compdfkit/MainPage.xaml

@@ -19,6 +19,10 @@
         </ResourceDictionary>
     </UserControl.Resources>
     <Grid>
+        <Grid.ColumnDefinitions>
+            <ColumnDefinition Width="355"/>
+            <ColumnDefinition/>
+        </Grid.ColumnDefinitions>
         <Grid.RowDefinitions>
             <RowDefinition Height="auto"></RowDefinition>
             <RowDefinition Height="40"></RowDefinition>
@@ -26,9 +30,9 @@
         </Grid.RowDefinitions>
 
         <!--顶部工具栏-->
-        <cpdftools:CPDFTitleBarControl Visibility="Visible"></cpdftools:CPDFTitleBarControl>
+        <cpdftools:CPDFTitleBarControl x:Name="CPDFTitleBarControl" Visibility="Visible" Grid.ColumnSpan="2" Loaded="CPDFTitleBarControl_Loaded" CanSave="{Binding CanSave,Mode=OneWay}"></cpdftools:CPDFTitleBarControl>
 
-        <Grid Grid.Row="1">
+        <Grid Grid.Row="1" Grid.ColumnSpan="2">
             <Grid.ColumnDefinitions>
                 <ColumnDefinition Width="auto"></ColumnDefinition>
                 <ColumnDefinition Width="*"></ColumnDefinition>
@@ -105,7 +109,6 @@
                 <Line Margin="13,0,13,0" Stroke="#E0E0E0" X1="0" Y1="5" X2="0" Y2="35"></Line>
 
                 <cpdftools:CPDFScalingControl x:Name="CPDFSaclingControl"></cpdftools:CPDFScalingControl>
-
             </StackPanel>
 
             <!--中间工具栏-->
@@ -179,7 +182,7 @@
                 </Button>
             </StackPanel>
         </Grid>
-        <Grid Name="BodyGrid" Grid.Row="2">
+        <Grid Name="BodyGrid" Grid.Row="2" Grid.ColumnSpan="2">
             <Grid.RowDefinitions>
                 <RowDefinition Height="auto"/>
                 <RowDefinition Height="*"/>
@@ -320,7 +323,7 @@
                 <cpdfcommon:PageNumberControl Grid.Row="1" Name="FloatPageTool" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,20"></cpdfcommon:PageNumberControl>
             </Grid>
         </Grid>
-        <Border Name="PopupBorder" Background="#A0000000" Visibility="Collapsed" Grid.RowSpan="3">
+        <Border Name="PopupBorder" Background="#A0000000" Visibility="Collapsed" Grid.RowSpan="3" Grid.ColumnSpan="2">
             <Grid>
                 <!--文件信息-->
                 <Grid Name="FileInfoUI"  Width="422" Height="680" HorizontalAlignment="Center" VerticalAlignment="Center" Background="White" Visibility="Collapsed">
@@ -349,6 +352,6 @@
                 <cpdfcommon:PasswordDialog x:Name="PasswordUI" Visibility="Collapsed"></cpdfcommon:PasswordDialog>
             </Grid>
         </Border>
-        
+
     </Grid>
 </UserControl>

+ 86 - 37
compdfkit_demo_windows/compdfkit/compdfkit/MainPage.xaml.cs

@@ -35,7 +35,7 @@ namespace compdfkit
     /// MainPage.xaml 的交互逻辑
     /// </summary>
     public partial class MainPage : UserControl, INotifyPropertyChanged
-    { 
+    {
         private bool isFirstLoad = true;
         private string currentMode = "Viewer";
         private PDFViewControl passwordViewer;
@@ -85,9 +85,9 @@ namespace compdfkit
         /// </summary>
         private PDFEditEvent lastPDFEditEvent = null;
 
-        public event Func<string, bool> CheckExistBeforeOpenFileEvent;
+        public event Func<string[], bool> CheckExistBeforeOpenFileEvent;
         public event PropertyChangedEventHandler PropertyChanged;
-         
+
         public MainPage()
         {
             InitializeComponent();
@@ -163,7 +163,7 @@ namespace compdfkit
 
         private void PdfAnnotationControl_ClearAnnotationBar(object sender, EventArgs e)
         {
-            AnnotationBarControl.ClearAllToolState();
+            AnnotationBarControl.ClearAllToolState(); 
         }
 
         #region Load Document
@@ -736,6 +736,32 @@ namespace compdfkit
 
         #region UI Action
 
+        public void SaveAsFile()
+        {
+            {
+                if (pdfViewControl != null && pdfViewControl.PDFView != null && pdfViewControl.PDFView.Document != null)
+                {
+                    try
+                    {
+                        CPDFDocument pdfDoc = pdfViewControl.PDFView.Document;
+                        SaveFileDialog saveDialog = new SaveFileDialog();
+                        saveDialog.Filter = "(*.pdf)|*.pdf";
+                        saveDialog.DefaultExt = ".pdf";
+                        saveDialog.OverwritePrompt = true;
+
+                        if (saveDialog.ShowDialog() == true)
+                        {
+                            pdfDoc.WriteToFilePath(saveDialog.FileName);
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+
+                    }
+                }
+            }
+        }
+
         public void SaveFile()
         {
             if (pdfViewControl != null && pdfViewControl.PDFView != null && pdfViewControl.PDFView.Document != null)
@@ -745,6 +771,7 @@ namespace compdfkit
                     CPDFDocument pdfDoc = pdfViewControl.PDFView.Document;
                     if (pdfDoc.WriteToLoadedPath())
                     {
+                        pdfViewControl.PDFView.UndoManager.CanSave = false;
                         return;
                     }
 
@@ -765,26 +792,28 @@ namespace compdfkit
             }
         }
 
-        private void OpenFile_Click(object sender, RoutedEventArgs e)
+        public void OpenFile()
         {
             try
             {
                 string filePath = CommonHelper.GetFilePathOrEmpty();
-                if ((bool)CheckExistBeforeOpenFileEvent?.Invoke(filePath)) 
-                {
-                    return;
-                }
+                string oldFilePath = pdfViewControl.PDFView.Document.FilePath;
+
                 if (!string.IsNullOrEmpty(filePath) && pdfViewControl != null)
                 {
                     if (pdfViewControl.PDFView != null && pdfViewControl.PDFView.Document != null)
                     {
-                        string oldFilePath = pdfViewControl.PDFView.Document.FilePath;
                         if (oldFilePath.ToLower() == filePath.ToLower())
                         {
                             return;
                         }
                     }
 
+                    if ((bool)CheckExistBeforeOpenFileEvent?.Invoke(new string[]{ filePath, oldFilePath}))
+                    {
+                        return;
+                    }
+
                     passwordViewer = new PDFViewControl();
                     passwordViewer.PDFView.InitDocument(filePath);
                     if (passwordViewer.PDFView.Document == null)
@@ -812,12 +841,16 @@ namespace compdfkit
 
             }
         }
+
+        private void OpenFile_Click(object sender, RoutedEventArgs e)
+        {
+            OpenFile();
+        }
         #endregion
 
         private void SaveFileBtn_Click(object sender, RoutedEventArgs e)
         {
             SaveFile();
-            pdfViewControl.PDFView.UndoManager.CanSave = false;
         }
 
         #region ToolPanel
@@ -980,6 +1013,7 @@ namespace compdfkit
                 return;
             }
         }
+
         /// <summary>
         /// Actions performed when switching modes:
         /// Separated into actions performed upon entering and exiting the mode.
@@ -996,8 +1030,9 @@ namespace compdfkit
             switch (currentMode)
             {
                 case "Viewer":
-
+                    pdfViewControl.PDFView?.SetMouseMode(MouseModes.Viewer);
                     break;
+
                 //Behavior when exit Edit mode
                 // Clear the ToolBar
                 // Collapse the ToolBar
@@ -1009,7 +1044,6 @@ namespace compdfkit
                     pdfAnnotationControl.ClearPanel();
                     ExpandRightPropertyPanel(null, Visibility.Collapsed);
                     pdfViewControl.PDFView?.SetMouseMode(MouseModes.PanTool);
-
                     break;
 
                 // Behavior when exit Edit mode:
@@ -1028,6 +1062,7 @@ namespace compdfkit
 
                     pdfViewControl.PDFView.PDFEditActiveHandler -= PDFView_PDFEditActiveHandler;
                     ExpandRightPropertyPanel(null, Visibility.Collapsed);
+                    ClearPDFEditState();
                     break;
                 default:
                     break;
@@ -1038,6 +1073,7 @@ namespace compdfkit
             if ((string)item.Content == "Viewer")
             {
                 ToolBarContainer.Visibility = Visibility.Collapsed;
+                pdfViewControl.PDFView.SetMouseMode(MouseModes.Viewer); 
             }
 
             // Behavior when switching to Annotation mode:
@@ -1047,6 +1083,7 @@ namespace compdfkit
             {
                 ToolBarContainer.Visibility = Visibility.Visible;
                 AnnotationBarControl.Visibility = Visibility.Visible;
+                pdfViewControl.PDFView.SetMouseMode(MouseModes.PanTool);
             }
 
             // Behavior when switching to Edit mode:
@@ -1092,25 +1129,10 @@ namespace compdfkit
 
         private void AnnotationBarControl_AnnotationCancel(object sender, EventArgs e)
         {
-            ToggleButton toggleButton = sender as ToggleButton;
-            if (toggleButton != null)
-            {
-                if (toggleButton.IsChecked == true)
-                {
-                    if (pdfAnnotationControl != null)
-                    {
-                        ExpandRightPropertyPanel(pdfAnnotationControl, Visibility.Visible);
-                        if ((bool)ViewSettingBtn.IsChecked)
-                        {
-                            ViewSettingBtn.IsChecked = false;
-                        }
-                    }
-                }
-                else
-                {
-                    ExpandRightPropertyPanel(null, Visibility.Collapsed);
-                }
-            }
+            pdfAnnotationControl.AnnotationCancel();
+            ExpandRightPropertyPanel(null, Visibility.Collapsed);
+            RightPanelButton.IsChecked = false;
+            ViewSettingBtn.IsChecked = false;
         }
 
         private void AnnotationBarControl_AnnotationPropertyChanged(object sender, CPDFAnnotationType e)
@@ -1128,7 +1150,7 @@ namespace compdfkit
             AnnotationBarControl.AnnotationPropertyChanged -= AnnotationBarControl_AnnotationPropertyChanged;
             AnnotationBarControl.AnnotationCancel -= AnnotationBarControl_AnnotationCancel;
         }
-        
+
         private void PDFTextEditButton_Click(object sender, RoutedEventArgs e)
         {
             ToggleButton senderBtn = sender as ToggleButton;
@@ -1196,7 +1218,7 @@ namespace compdfkit
                 }
             }
         }
-         
+
         private void UndoBtn_Click(object sender, RoutedEventArgs e)
         {
             if (pdfViewControl != null && pdfViewControl.PDFView != null)
@@ -1222,12 +1244,39 @@ namespace compdfkit
 
         public void SetPDFViewer(PDFViewControl newPdfViewer)
         {
-           
-            if(newPdfViewer!=null)
+
+            if (newPdfViewer != null)
             {
                 pdfViewControl = newPdfViewer;
             }
-           
+
+        }
+
+        private void CPDFTitleBarControl_Loaded(object sender, RoutedEventArgs e)
+        {
+            CPDFTitleBarControl.OpenFileEvent -= CPDFTitleBarControl_OpenFileEvent;
+            CPDFTitleBarControl.OpenFileEvent += CPDFTitleBarControl_OpenFileEvent;
+
+            CPDFTitleBarControl.SaveAsFileEvent -= CPDFTitleBarControl_SaveAsFileEvent;
+            CPDFTitleBarControl.SaveAsFileEvent += CPDFTitleBarControl_SaveAsFileEvent;
+
+            CPDFTitleBarControl.SaveFileEvent -= CPDFTitleBarControl_SaveFileEvent;
+            CPDFTitleBarControl.SaveFileEvent += CPDFTitleBarControl_SaveFileEvent; ;
+        }
+
+        private void CPDFTitleBarControl_SaveFileEvent(object sender, EventArgs e)
+        {
+            SaveFile();
+        }
+
+        private void CPDFTitleBarControl_SaveAsFileEvent(object sender, EventArgs e)
+        {
+            SaveAsFile();
+        }
+
+        private void CPDFTitleBarControl_OpenFileEvent(object sender, EventArgs e)
+        {
+            OpenFile();
         }
     }
 }

+ 79 - 59
compdfkit_demo_windows/compdfkit/compdfkit/MainWindow.xaml.cs

@@ -44,7 +44,6 @@ namespace compdfkit
         {
             InitializeComponent();
             Loaded += MainWindow_Loaded;
-            App.OpenedFilePathList.Clear();
         }
 
 
@@ -86,72 +85,36 @@ namespace compdfkit
 
         private void TabControlLoadDocument(string filePath)
         {
-
-            if (App.OpenedFilePathList.Contains(filePath.ToLower()))
+            if (App.OpenedFilePathList.Contains(filePath))
             {
-                foreach (TabItemExt item in TabControl.Items)
+                for (int i = 0; i < App.Current.Windows.Count; i++)
                 {
-                    item.IsSelected = true; // 如果存在相同的 Tag,则选中对应的 tabItem
-                    return;
+                    MainWindow win = App.Current.Windows[i] as MainWindow;
+                    if (win != null)
+                    {
+                        var items = win.TabControl.Items;
+
+                        foreach (TabItemExt item in items)
+                        {
+                            if (item.Tag.ToString().ToLower() == filePath.ToLower())
+                            {
+                                win.Activate();
+                                item.IsSelected = true;
+                                return;
+                            }
+                        }
+                    }
                 }
             }
 
             TabItemExt tabItem = new TabItemExt();
             MainPage viewPage = new MainPage();
 
-            viewPage.CheckExistBeforeOpenFileEvent -= (e) =>
-            {
-                foreach (TabItemExt item in TabControl.Items)
-                {
-                    if (item.Tag != null && item.Tag.ToString() == e)
-                    {
-                        item.IsSelected = true;
-                        return true;
-                    }
-                }
-                tabItem.IsSelected = true;
-                tabItem.FileName = Path.GetFileName(e);
-                if (App.OpenedFilePathList.Contains(e))
-                {
-                    for (int i = 0; i < App.OpenedFilePathList.Count; i++)
-                    {
-                        if (e.ToLower() == App.OpenedFilePathList[i].ToLower())
-                        {
-                            App.OpenedFilePathList[i] = e;
-                            break;
-                        }
-                    }
-                }
-                tabItem.Tag = e;
-                return false;
-            };
+            viewPage.CheckExistBeforeOpenFileEvent -= ViewPage_CheckExistBeforeOpenFileEvent;
 
-            viewPage.CheckExistBeforeOpenFileEvent += (e) =>
-            {
-                foreach (TabItemExt item in TabControl.Items)
-                {
-                    if (item.Tag != null && item.Tag.ToString() == e)
-                    {
-                        item.IsSelected = true;
-                        return true;
-                    }
-                }
-                tabItem.IsSelected = true;
-                tabItem.FileName = Path.GetFileName(e);
-                if (App.OpenedFilePathList.Contains(e))
-                {
-                    for (int i = 0; i < App.OpenedFilePathList.Count; i++)
-                    {
-                        if (e.ToLower() == App.OpenedFilePathList[i].ToLower())
-                        {
-                            App.OpenedFilePathList[i] = e;
-                            break;
-                        }
-                    }
-                }
-                tabItem.Tag = e;
-                return false;
-            };
+
+
+            viewPage.CheckExistBeforeOpenFileEvent += ViewPage_CheckExistBeforeOpenFileEvent;
 
             passwordViewer = new PDFViewControl();
             passwordViewer.PDFView.InitDocument(filePath);
@@ -177,11 +140,68 @@ namespace compdfkit
                 tabItem.Tag = filePath;
 
                 App.OpenedFilePathList.Add(filePath);
-
                 TabControl.Items.Add(tabItem);
             }
         }
 
+        private bool ViewPage_CheckExistBeforeOpenFileEvent(string[] arg)
+        {
+
+            if (App.OpenedFilePathList.Contains(arg[0]))
+            {
+                for (int i = 0; i < App.Current.Windows.Count; i++)
+                {
+                    MainWindow win = App.Current.Windows[i] as MainWindow;
+                    if (win != null)
+                    {
+                        var items = win.TabControl.Items;
+
+                        foreach (TabItemExt item in items)
+                        {
+                            if (item.Tag.ToString().ToLower() == arg[0].ToLower())
+                            {
+                                win.Activate();
+                                item.IsSelected = true;
+                                return true;
+                            }
+                        }
+                    }
+                }
+            }
+
+
+            for (int i = 0; i < App.Current.Windows.Count; i++)
+            {
+                MainWindow win = App.Current.Windows[i] as MainWindow;
+                if (win != null)
+                {
+                    var items = win.TabControl.Items;
+
+                    foreach (TabItemExt item in items)
+                    {
+                        if (item.Tag.ToString().ToLower() == arg[1].ToLower())
+                        {
+                            item.IsSelected = true;
+                            item.FileName = Path.GetFileName(arg[0]);
+                            item.IsSelected = true;
+                            item.Tag = arg[0];
+                        }
+                    }
+                }
+            }
+
+            for (int i = 0; i < App.OpenedFilePathList.Count; i++)
+            {
+                if (arg[1].ToLower() == App.OpenedFilePathList[i].ToLower())
+                {
+                    App.OpenedFilePathList[i] = arg[0];
+                    break;
+                }
+            }
+
+            return false;
+
+        }
 
         public class TabItemExt : TabItem, INotifyPropertyChanged
         {