Browse Source

PDF工具 - 编辑拖拽同步快捷工具,更改属性名称

chenrongqian 2 năm trước cách đây
mục cha
commit
76e39fc42b

+ 255 - 58
PDF Office/Helper/PDFToolsHelper.cs

@@ -9,7 +9,34 @@ using System.Threading.Tasks;
 
 namespace PDF_Office.Helper
 {
+    /// <summary>
+    /// 预设需求:远程控制对PDF工具进行排序
+    /// </summary>
     public enum PDFToolType
+    {
+        /// <summary>
+        /// 普通工具
+        /// </summary>
+        Normal,
+        /// <summary>
+        /// 常用工具
+        /// </summary>
+        Common,
+        /// <summary>
+        ///付费工具
+        /// </summary>
+        Payment,
+        /// <summary>
+        /// 优势工具
+        /// </summary>
+        Advantage,
+        /// <summary>
+        /// 无需打开文档
+        /// </summary>
+        NoNeedToOpenDoc
+
+    }
+    public enum PDFFnType
     {
         Split,
         Extract,
@@ -31,12 +58,61 @@ namespace PDF_Office.Helper
         Background,
         CompareDoc
 
+    }
+
+    /// <summary>
+    /// PDF工具初始化类型
+    /// </summary>
+    internal class PDFToolsInit
+    {
+        public ToolItem toolItem { get; private set; }
+        public PDFToolsInit()
+        {
+            toolItem = new ToolItem();
+        }
+
+        /// <summary>
+        /// 图标
+        /// </summary>
+        public void SetImagePath(string path)
+        {
+            toolItem.Image = path;
+        }
+
+        /// <summary>
+        /// 初始化UI显示内容
+        /// </summary>
+        public void SetContent(string fnName,string fnInfo)
+        {
+            toolItem.Title = fnName;
+            toolItem.TitleInfo = fnInfo;
+        }
+
+        /// <summary>
+        /// 初始化功能
+        /// </summary>
+        public void SetFnType(PDFFnType fnType)
+        {
+            toolItem.FnType = (int)fnType;
+            toolItem.strFnType = Enum.GetName(typeof(PDFFnType), fnType);
+        }
+
+
     }
     public class PDFToolsHelper
     {
         public List<ToolItem> AllTools = null;
         public List<ToolItem> QuickTools = null;
-        public PDFToolsHelper()
+        public List<ToolItem> MoreTools = null;
+        private static PDFToolsHelper pDFToolsHelper;
+        public static PDFToolsHelper GetInstance()
+        {
+            if (pDFToolsHelper == null)
+                pDFToolsHelper = new PDFToolsHelper();
+
+            return pDFToolsHelper;
+        }
+        private PDFToolsHelper()
         {
             InitPDFTools();
         }
@@ -44,99 +120,220 @@ namespace PDF_Office.Helper
         private void InitPDFTools()
         {
             AllTools = new List<ToolItem>();
+            QuickTools = new List<ToolItem>();
+            MoreTools = new List<ToolItem>();
+            //测试代码
+            //Settings.Default.AllPDFToolsList.Clear();
+            //Settings.Default.QuickPDFToolsList.Clear();
+            //Settings.Default.Save();
             InitAllTools();
+            ContianNewTools();
             InitQuickTools();
+            InitMoreTools();
         }
 
         private void InitAllTools()
-        {
-            string path = @"pack://application:,,,/Resources/HomeIcon/PDFTools/split.png";
-            AddToolItem(PDFToolType.Split, path, "拆分", "Batch convert, compress, secure, watermark PDFs.");
+        { 
+
+            var split = new PDFToolsInit();
+            split.SetFnType(PDFFnType.Split);
+            split.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/split.png");
+            split.SetContent("拆分", "Batch convert, compress, secure, watermark PDFs.");
+
+            var extract = new PDFToolsInit();
+            extract.SetFnType(PDFFnType.Extract);
+            extract.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/extract.png");
+            extract.SetContent("提取", "Batch convert, compress, secure, watermark PDFs.");
+
+            var insert = new PDFToolsInit();
+            insert.SetFnType(PDFFnType.Insert);
+            insert.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/insert.png");
+            insert.SetContent("插入", "Batch convert, compress, secure, watermark PDFs.");
+
+            var compress = new PDFToolsInit();
+            compress.SetFnType(PDFFnType.Compress);
+            compress.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/compress.png");
+            compress.SetContent("压缩", "Batch convert, compress, secure, watermark PDFs.");
+
+            var merge = new PDFToolsInit();
+            merge.SetFnType(PDFFnType.Merge);
+            merge.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/merge.png");
+            merge.SetContent("合并", "Batch convert, compress, secure, watermark PDFs.");
+
+            var print = new PDFToolsInit();
+            print.SetFnType(PDFFnType.Print);
+            print.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/print.png");
+            print.SetContent("打印", "Batch convert, compress, secure, watermark PDFs.");
+
 
-            path = @"pack://application:,,,/Resources/HomeIcon/PDFTools/extract.png";
-            AddToolItem(PDFToolType.Extract, path, "提取", "Batch convert, compress, secure, watermark PDFs.");
+            var security = new PDFToolsInit();
+            security.SetFnType(PDFFnType.Security);
+            security.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/security.png");
+            security.SetContent("安全", "Batch convert, compress, secure, watermark PDFs.");
 
-            path = @"pack://application:,,,/Resources/HomeIcon/PDFTools/insert.png";
-            AddToolItem(PDFToolType.Insert, path, "插入", "Batch convert, compress, secure, watermark PDFs.");
+            var convertPDF = new PDFToolsInit();
+            convertPDF.SetFnType(PDFFnType.ConvertPDF);
+            convertPDF.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/convert.png");
+            convertPDF.SetContent("转档PDF", "Batch convert, compress, secure, watermark PDFs.");
 
-            path = @"pack://application:,,,/Resources/HomeIcon/PDFTools/compress.png";
-            AddToolItem(PDFToolType.Compress, path, "压缩", "Batch convert, compress, secure, watermark PDFs.");
+            var pDFToWord = new PDFToolsInit();
+            pDFToWord.SetFnType(PDFFnType.PDFToWord);
+            pDFToWord.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/pdf-to-word.png");
+            pDFToWord.SetContent("PDF转Word", "Batch convert, compress, secure, watermark PDFs.");
 
-            path = @"pack://application:,,,/Resources/HomeIcon/PDFTools/merge.png";
-            AddToolItem(PDFToolType.Merge, path, "合并", "Batch convert, compress, secure, watermark PDFs.");
 
-            path = @"pack://application:,,,/Resources/HomeIcon/PDFTools/print.png";
-            AddToolItem(PDFToolType.Print, path, "打印", "Batch convert, compress, secure, watermark PDFs.");
+            var pDFToExcel = new PDFToolsInit();
+            pDFToExcel.SetFnType(PDFFnType.PDFToExcel);
+            pDFToExcel.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/pdf-to-excel.png");
+            pDFToExcel.SetContent("PDF转Excel", "Batch convert, compress, secure, watermark PDFs.");
 
-            path = @"pack://application:,,,/Resources/HomeIcon/PDFTools/security.png";
-            AddToolItem(PDFToolType.Security, path, "安全", "Batch convert, compress, secure, watermark PDFs.");
 
-            path = @"pack://application:,,,/Resources/HomeIcon/PDFTools/convert.png";
-            AddToolItem(PDFToolType.ConvertPDF, path, "转档PDF", "Batch convert, compress, secure, watermark PDFs.");
+            var pDFToPPT = new PDFToolsInit();
+            pDFToPPT.SetFnType(PDFFnType.PDFToPPT);
+            pDFToPPT.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/pdf-to-ppt.png");
+            pDFToPPT.SetContent("PDF转PPT", "Batch convert, compress, secure, watermark PDFs.");
 
-            path = @"pack://application:,,,/Resources/HomeIcon/PDFTools/pdf-to-word.png";
-            AddToolItem(PDFToolType.PDFToWord, path, "PDF转Word", "Batch convert, compress, secure, watermark PDFs.");
 
-            path = @"pack://application:,,,/Resources/HomeIcon/PDFTools/pdf-to-excel.png";
-            AddToolItem(PDFToolType.PDFToExcel, path, "PDF转Excel", "Batch convert, compress, secure, watermark PDFs.");
+            var imageToPDF = new PDFToolsInit();
+            imageToPDF.SetFnType(PDFFnType.ImageToPDF);
+            imageToPDF.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/image.png");
+            imageToPDF.SetContent("图片转PDF", "Batch convert, compress, secure, watermark PDFs.");
 
-            path = @"pack://application:,,,/Resources/HomeIcon/PDFTools/pdf-to-ppt.png";
-            AddToolItem(PDFToolType.PDFToPPT, path, "PDF转PPT", "Batch convert, compress, secure, watermark PDFs.");
+            var oCR = new PDFToolsInit();
+            oCR.SetFnType(PDFFnType.OCR);
+            oCR.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/ocr.png");
+            oCR.SetContent("OCR", "Batch convert, compress, secure, watermark PDFs.");
 
-            path = @"pack://application:,,,/Resources/HomeIcon/PDFTools/image.png";
-            AddToolItem(PDFToolType.ImageToPDF, path, "图片转PDF", "Batch convert, compress, secure, watermark PDFs.");
+            var waterMark = new PDFToolsInit();
+            waterMark.SetFnType(PDFFnType.WaterMark);
+            waterMark.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/watermark.png");
+            waterMark.SetContent("水印", "Batch convert, compress, secure, watermark PDFs.");
 
-            path = @"pack://application:,,,/Resources/HomeIcon/PDFTools/ocr.png";
-            AddToolItem(PDFToolType.OCR, path, "OCR", "Batch convert, compress, secure, watermark PDFs.");
+            var headerFooter = new PDFToolsInit();
+            headerFooter.SetFnType(PDFFnType.HeaderFooter);
+            headerFooter.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/header&footer.png");
+            headerFooter.SetContent("页眉页脚", "Batch convert, compress, secure, watermark PDFs.");
 
-            path = @"pack://application:,,,/Resources/HomeIcon/PDFTools/watermark.png";
-            AddToolItem(PDFToolType.WaterMark, path, "水印", "Batch convert, compress, secure, watermark PDFs.");
+            var batesNumbers = new PDFToolsInit();
+            batesNumbers.SetFnType(PDFFnType.BatesNumbers);
+            batesNumbers.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/batesnumbers.png");
+            batesNumbers.SetContent("贝茨Bates码", "Batch convert, compress, secure, watermark PDFs.");
 
-            path = @"pack://application:,,,/Resources/HomeIcon/PDFTools/header&footer.png";
-            AddToolItem(PDFToolType.HeaderFooter, path, "页眉页脚", "Batch convert, compress, secure, watermark PDFs.");
 
-            path = @"pack://application:,,,/Resources/HomeIcon/PDFTools/batesnumbers.png";
-            AddToolItem(PDFToolType.BatesNumbers, path, "贝茨Bates码", "Batch convert, compress, secure, watermark PDFs.");
+            var batch = new PDFToolsInit();
+            batch.SetFnType(PDFFnType.Batch);
+            batch.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/batch.png");
+            batch.SetContent("批量处理", "Batch convert, compress, secure, watermark PDFs.");
 
-            path = @"pack://application:,,,/Resources/HomeIcon/PDFTools/batch.png";
-            AddToolItem(PDFToolType.Batch, path, "批量处理", "Batch convert, compress, secure, watermark PDFs.");
 
-            path = @"pack://application:,,,/Resources/HomeIcon/PDFTools/background.png";
-            AddToolItem(PDFToolType.Background, path, "背景", "Batch convert, compress, secure, watermark PDFs.");
+            var background = new PDFToolsInit();
+            background.SetFnType(PDFFnType.Background);
+            background.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/background.png");
+            background.SetContent("背景", "Batch convert, compress, secure, watermark PDFs.");
 
-            path = @"pack://application:,,,/Resources/HomeIcon/PDFTools/compress.png";
-            AddToolItem(PDFToolType.CompareDoc, path, "文件对比", "Batch convert, compress, secure, watermark PDFs.");
 
-           
+            var compareDoc = new PDFToolsInit();
+            compareDoc.SetFnType(PDFFnType.CompareDoc);
+            compareDoc.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/compress.png");
+            compareDoc.SetContent("文件对比", "Batch convert, compress, secure, watermark PDFs.");
+
+            AllTools.Add(split.toolItem);
+            AllTools.Add(extract.toolItem);
+            AllTools.Add(insert.toolItem);
+            AllTools.Add(compress.toolItem);
+            AllTools.Add(merge.toolItem);
+            AllTools.Add(print.toolItem);
+            AllTools.Add(security.toolItem);
+            AllTools.Add(convertPDF.toolItem);
+            AllTools.Add(pDFToWord.toolItem);
+            AllTools.Add(pDFToExcel.toolItem);
+            AllTools.Add(pDFToPPT.toolItem);
+            AllTools.Add(imageToPDF.toolItem);
+            AllTools.Add(oCR.toolItem);
+            AllTools.Add(waterMark.toolItem);
+            AllTools.Add(headerFooter.toolItem);
+            AllTools.Add(batesNumbers.toolItem);
+            AllTools.Add(batch.toolItem);
+            AllTools.Add(background.toolItem);
+            AllTools.Add(compareDoc.toolItem);
         }
 
         private void ContianNewTools()
         {
-            if (Settings.Default.AllPDFToolsList != null)
+            Settings.Default.AllPDFToolsList.Clear();
+            foreach (var item in AllTools)
             {
-                foreach(var item in AllTools)
-                {
-                    Settings.Default.AllPDFToolsList.FirstOrDefault(tool => tool.Tag == item.Tag);
-                }
+                Settings.Default.AllPDFToolsList.Add(item);
             }
+            Settings.Default.Save();
+
         }
 
-        private void AddToolItem(PDFToolType toolType, string imgPath,string title,string titleInfo,int id = 0)
+        /// <summary>
+        /// 快捷工具
+        /// </summary>
+        private void InitQuickTools()
         {
-            ToolItem toolItem = new ToolItem();
-
-            toolItem.Id = id;
-            toolItem.Tag = (int)toolType;
-            toolItem.TagStr = Enum.GetName(typeof(PDFToolType), toolType);
-            toolItem.Image = imgPath;
-            toolItem.Title = title;
-            toolItem.TitleInfo = titleInfo;
-            AllTools.Add(toolItem);
+            var settingQuickToolslist = Settings.Default.QuickPDFToolsList;
+
+            int quickToolCount = 0;
+            if (settingQuickToolslist != null && settingQuickToolslist.Count > 0)
+            {
+                foreach (var item in AllTools)
+                {
+                    if (quickToolCount == 8)
+                        break;
+
+                    var pdfToolItem = settingQuickToolslist.FirstOrDefault(tool => tool.strFnType == item.strFnType);
+                    if (pdfToolItem != null)
+                    {
+                        quickToolCount++;
+                        pdfToolItem.FnType = item.FnType;
+                        QuickTools.Add(pdfToolItem);
+                    }
+                }
+
+                if (quickToolCount < 8 && AllTools.Count > 8)
+                {
+                    var count = 8 - quickToolCount;
+                    for (int i = count - 1; i < count; i++)
+                    {
+                        QuickTools.Add(AllTools[i]);
+                    }
+                }
+            }
+            else
+            {
+                if (settingQuickToolslist == null)
+                    Settings.Default.QuickPDFToolsList = new QuickPDFToolsList();
+
+                QuickTools = AllTools.Take(8).ToList<ToolItem>();
+
+                foreach(var item in QuickTools)
+                {
+                    Settings.Default.QuickPDFToolsList.Add(item);
+                }
+
+                Settings.Default.Save();
+
+            }
+                
+
         }
 
-        private void InitQuickTools()
+        private void InitMoreTools()
         {
-            QuickTools = AllTools.Take(8).ToList<ToolItem>();
+            List<ToolItem> more = new List<ToolItem>();
+            foreach (var item in AllTools)
+            {
+                var pdfToolItem = QuickTools.FirstOrDefault(tool => tool.strFnType == item.strFnType);
+                if (pdfToolItem == null)
+                {
+                    more.Add(item);
+                }
+            }
+
+            MoreTools = more;
         }
     }
 

+ 6 - 2
PDF Office/Model/PDFTool/ToolItem.cs

@@ -2,21 +2,25 @@
 using Prism.Mvvm;
 using System;
 using System.Collections.Generic;
+using System.ComponentModel;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 
 namespace PDF_Office.Model.PDFTool
 {
-    public class ToolItem1 : BindableBase
+    public class ToolItem1 : INotifyPropertyChanged
     {
+        public event PropertyChangedEventHandler PropertyChanged = delegate { };
+
         private bool _isShowConciseContent = false;
         public bool IsShowConciseContent
         {
             get { return _isShowConciseContent; }
             set
             {
-                SetProperty(ref _isShowConciseContent, value);
+                _isShowConciseContent = value;
+                PropertyChanged(this, new PropertyChangedEventArgs("IsShowConciseContent"));
             }
         }
         public bool IsNewTool { get; set; }

+ 11 - 5
PDF Office/Styles/CustomListItemStyle.xaml

@@ -45,10 +45,13 @@
             <Setter.Value>
                 <ControlTemplate TargetType="{x:Type customControl:ListItemQuickTool}">
                     <Border x:Name="Border"
-                                Margin="0,0,0,30"
-                               
-                                Background="AliceBlue"
+                                Margin="0,0,0,16"
+                                BorderThickness="1" 
+                                Background="Transparent"
                                 SnapsToDevicePixels="true">
+                        <Border.BorderBrush>
+                            <SolidColorBrush Color="#000000" Opacity="0.05"/>
+                        </Border.BorderBrush>
                         <ContentPresenter />
                     </Border>
                     <ControlTemplate.Triggers>
@@ -80,9 +83,12 @@
         <Setter Property="Template">
             <Setter.Value>
                 <ControlTemplate TargetType="{x:Type customControl:ListItemQuickTool}">
-                    <Border x:Name="Border"  Margin="0,0,0,30"
-                                Background="LightGray"
+                    <Border x:Name="Border" CornerRadius="4" Margin="0,0,0,16" BorderThickness="1" 
+                                Background="Transparent"
                                 SnapsToDevicePixels="False">
+                        <Border.BorderBrush>
+                            <SolidColorBrush Color="#000000" Opacity="0.05"/>
+                        </Border.BorderBrush>
                         <ContentPresenter />
                     </Border>
                     <ControlTemplate.Triggers>

+ 11 - 11
PDF Office/ViewModels/HomePanel/HomeGuidContentViewModel.cs

@@ -38,11 +38,11 @@ namespace PDF_Office.ViewModels.HomePanel
             System.Windows.Forms.OpenFileDialog dlg = new System.Windows.Forms.OpenFileDialog();
             dlg.Multiselect = false;
             dlg.Filter = "PDF|*.pdf;*.PDF;";
-            if (toolItem.Tag == (int)PDFToolType.Compress || toolItem.Tag == (int)PDFToolType.Security)
+            if (toolItem.FnType == (int)PDFFnType.Compress || toolItem.FnType == (int)PDFFnType.Security)
             {
                 dlg.Multiselect = true;
             }
-                if (toolItem.Tag == (int)PDFToolType.Merge)
+                if (toolItem.FnType == (int)PDFFnType.Merge)
             {
                 dlg.Multiselect = true;
                 dlg.Filter = "Picture|*.png;*.PNG;*.jpg;*.JPG;*bmp;*jpeg;*gif;*tiff;";
@@ -51,9 +51,9 @@ namespace PDF_Office.ViewModels.HomePanel
             {
                 CPDFViewer viewer = new CPDFViewer();
                 
-                switch ((PDFToolType)toolItem.Tag)
+                switch ((PDFFnType)toolItem.FnType)
                 {
-                    case PDFToolType.Split:
+                    case PDFFnType.Split:
                         
                         viewer.InitDocument(dlg.FileName);
                         DialogParameters splitvalue = new DialogParameters();
@@ -62,7 +62,7 @@ namespace PDF_Office.ViewModels.HomePanel
                         dialogs.ShowDialog(DialogNames.HomePageSplitDialog, splitvalue, e => { });
                         break;
 
-                    case PDFToolType.Extract:
+                    case PDFFnType.Extract:
                         viewer.InitDocument(dlg.FileName);
                         DialogParameters extractvalue = new DialogParameters();
                         extractvalue.Add(ParameterNames.PDFViewer, viewer);
@@ -70,7 +70,7 @@ namespace PDF_Office.ViewModels.HomePanel
                         dialogs.ShowDialog(DialogNames.HomePageExtractDialog, extractvalue, e => { });
                         break;
 
-                    case PDFToolType.Insert:
+                    case PDFFnType.Insert:
                         viewer.InitDocument(dlg.FileName);
                         DialogParameters insertvalue = new DialogParameters();
                         insertvalue.Add(ParameterNames.PDFViewer, viewer);
@@ -78,7 +78,7 @@ namespace PDF_Office.ViewModels.HomePanel
                         dialogs.ShowDialog(DialogNames.HomePageInsertDialog, insertvalue, e => { });
                         break;
 
-                    case PDFToolType.Compress:
+                    case PDFFnType.Compress:
                         DialogParameters compresspdf = new DialogParameters();
                         compresspdf.Add(ParameterNames.BatchProcessing_Name, "1");
                         HomePageBatchProcessingDialogModel.FilePaths = dlg.FileNames.ToList();
@@ -87,13 +87,13 @@ namespace PDF_Office.ViewModels.HomePanel
                         dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, compresspdf, e => { });
                         break;
 
-                    case PDFToolType.Merge:
+                    case PDFFnType.Merge:
                         DialogParameters picturetopdf = new DialogParameters();
                         picturetopdf.Add(ParameterNames.FilePath, dlg.FileNames);
                         dialogs.ShowDialog(DialogNames.HomePagePictureToPDFDialog, picturetopdf, e => { });
                         break;
 
-                    case PDFToolType.Print:
+                    case PDFFnType.Print:
                         viewer.InitDocument(dlg.FileName);
                         DialogParameters printvalue = new DialogParameters();
                         printvalue.Add(ParameterNames.PDFViewer, viewer);
@@ -101,7 +101,7 @@ namespace PDF_Office.ViewModels.HomePanel
                         dialogs.ShowDialog(DialogNames.HomePagePrinterDialog, printvalue, e => { });
                         break;
 
-                    case PDFToolType.Security:
+                    case PDFFnType.Security:
                         DialogParameters securitypdf = new DialogParameters();
                         securitypdf.Add(ParameterNames.BatchProcessing_Name, "2");
                         HomePageBatchProcessingDialogModel.FilePaths = dlg.FileNames.ToList();
@@ -110,7 +110,7 @@ namespace PDF_Office.ViewModels.HomePanel
                         dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, securitypdf, e => { });
                         
                         break;
-                    case PDFToolType.ConvertPDF:
+                    case PDFFnType.ConvertPDF:
                         DialogParameters convertpdf = new DialogParameters();
                         convertpdf.Add(ParameterNames.BatchProcessing_Name, "0");
                         HomePageBatchProcessingDialogModel.FilePaths = dlg.FileNames.ToList();

+ 6 - 6
PDF Office/Views/HomePanel/PDFTools/PDFToolItem.xaml

@@ -11,12 +11,12 @@
         <convert:BoolToVisible x:Key="boolToVisible"/>
         <convert:InvertBoolToVisibleConvert x:Key="invertBoolToVisibleConvert"/>
     </UserControl.Resources>
-    <Grid  Margin="1,1,1,1">
+    <Grid  Margin="1,1,1,1" Background="White">
 
-        <Border x:Name="BorderExtend" Height="108"  CornerRadius="8" Background="White" BorderThickness="2" 
-                Visibility="{Binding IsShowConciseContent,Converter={StaticResource invertBoolToVisibleConvert}}">
+        <Border x:Name="BorderExtend" Height="108"  Background="White"
+                Visibility="{Binding IsShowConciseContent,Converter={StaticResource invertBoolToVisibleConvert},Mode=OneWay}">
 
-            <Grid  Background="Transparent" MouseEnter="Border_MouseEnter" MouseLeave="Border_MouseLeave">
+            <Grid   MouseEnter="Border_MouseEnter" MouseLeave="Border_MouseLeave">
                 <Grid Margin="10">
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="auto"></ColumnDefinition>
@@ -44,8 +44,8 @@
             </Grid>
         </Border>
 
-        <Border x:Name="BorderConcise" Height="64"  CornerRadius="8" Background="White" BorderThickness="2" BorderBrush="#04000000" 
-                Visibility="{Binding IsShowConciseContent,Converter={StaticResource boolToVisible}}">
+        <Border x:Name="BorderConcise" Height="64" 
+                Visibility="{Binding IsShowConciseContent,Converter={StaticResource boolToVisible},Mode=OneWay}">
             <Grid Background="Transparent" MouseEnter="Border_MouseEnter" MouseLeave="Border_MouseLeave">
                 <Grid.ColumnDefinitions>
                     <ColumnDefinition Width="auto"/>

+ 1 - 1
PDF Office/Views/HomePanel/PDFTools/PDFToolsContent.xaml

@@ -7,7 +7,7 @@
       xmlns:customControl="clr-namespace:PDF_Office.CustomControl"
       xmlns:converter="clr-namespace:PDF_Office.DataConvert"
       Background="White"  MinWidth="540" MinHeight="460"
-      mc:Ignorable="d" 
+      mc:Ignorable="d"  Loaded="Page_Loaded"
       d:DesignHeight="450" d:DesignWidth="800"
      >
     <UserControl.Resources>

+ 43 - 39
PDF Office/Views/HomePanel/PDFTools/PDFToolsContent.xaml.cs

@@ -48,8 +48,7 @@ namespace PDF_Office.Views.HomePanel.PDFTools
         public PDFToolsContent()
         {
             InitializeComponent();
-            PDFtools = new PDFToolsHelper();
-
+            PDFtools = PDFToolsHelper.GetInstance();
 
             #region ListBox
 
@@ -74,17 +73,15 @@ namespace PDF_Office.Views.HomePanel.PDFTools
         {
             quickTools = PDFtools.QuickTools;
             allTools = PDFtools.AllTools;
-
+            moreTools = PDFtools.MoreTools;
             ListShortCuts.ItemsSource = quickTools;
-            //对比两个集合,取差值
-            moreTools = allTools.Except(quickTools).ToList();
-
             ListMoreCuts.ItemsSource = moreTools;
-
+           
         }
 
         private void Page_Loaded(object sender, RoutedEventArgs e)
         {
+            UpdateExptend();
         }
 
         private void ListBoxMoreCuts_PreviewMouseMove(object sender, MouseEventArgs e)
@@ -239,7 +236,7 @@ namespace PDF_Office.Views.HomePanel.PDFTools
                 quickTools.Insert(targetIndex, source);
 
                 ListMoreCuts.Items.Refresh();
-                ListShortCuts.Items.Refresh();
+                ListShortCuts.Items.Refresh(); 
 
                 sourceImage.Visibility = Visibility.Hidden;
                 targetListItem.IsOverModular = false;
@@ -497,35 +494,6 @@ namespace PDF_Office.Views.HomePanel.PDFTools
             }
         }
 
-        ///// <summary>
-        ///// 扩展收缩UI
-        ///// </summary>
-        ///// <param name="IsShowConciseContent">是否收缩</param>
-        //private void ShowToolsUI(ListBoxEx list,bool IsShowConciseContent)
-        //{
-        //    foreach (var item in list.Items)
-        //    {
-
-        //        var listBoxItem = list.ItemContainerGenerator.ContainerFromItem(item) as ListBoxItem;
-        //        if (listBoxItem != null)
-        //        {
-
-        //            var viewItem = listBoxItem.ContentTemplate;
-        //            var myContentPresenter = CommonHelper.FindVisualChild<ContentPresenter>(listBoxItem);
-        //            var obj = viewItem.FindName("data", myContentPresenter);
-
-        //            var checkNum = obj as PDFToolItem;
-
-        //            if (checkNum != null)
-        //            {
-        //                checkNum.IsShowConciseContent = IsShowConciseContent;
-        //            }
-
-        //        }
-        //    }
-
-        //}
-
 
         private void ListBoxShortCuts_SizeChanged(object sender, SizeChangedEventArgs e)
         {
@@ -572,13 +540,22 @@ namespace PDF_Office.Views.HomePanel.PDFTools
 
 
         private void BtnExptend_Click(object sender, RoutedEventArgs e)
+        {
+            UpdateExptend();
+        }
+
+        private void UpdateExptend()
         {
             foreach (var item in allTools)
             {
-                item.IsShowConciseContent = (bool)BtnExptend.IsChecked;
+                item.IsShowConciseContent = !(bool)BtnExptend.IsChecked;
             }
-        }
 
+            foreach (var item in quickTools)
+            {
+                item.IsShowConciseContent = !(bool)BtnExptend.IsChecked;
+            }
+        }
 
         //自适应流式布局,以防改需求备用
         //private void ListBoxMoreCutsWidthChanged()
@@ -608,7 +585,34 @@ namespace PDF_Office.Views.HomePanel.PDFTools
         //    }
         //}
 
+        ///// <summary>
+        ///// 扩展收缩UI
+        ///// </summary>
+        ///// <param name="IsShowConciseContent">是否收缩</param>
+        //private void ShowToolsUI(ListBoxEx list,bool IsShowConciseContent)
+        //{
+        //    foreach (var item in list.Items)
+        //    {
+
+        //        var listBoxItem = list.ItemContainerGenerator.ContainerFromItem(item) as ListBoxItem;
+        //        if (listBoxItem != null)
+        //        {
+
+        //            var viewItem = listBoxItem.ContentTemplate;
+        //            var myContentPresenter = CommonHelper.FindVisualChild<ContentPresenter>(listBoxItem);
+        //            var obj = viewItem.FindName("data", myContentPresenter);
+
+        //            var checkNum = obj as PDFToolItem;
 
+        //            if (checkNum != null)
+        //            {
+        //                checkNum.IsShowConciseContent = IsShowConciseContent;
+        //            }
+
+        //        }
+        //    }
+
+        //}
     }
 
 }

+ 8 - 4
PDF Office/Views/HomePanel/PDFTools/QuickToolsContent.xaml

@@ -10,6 +10,7 @@
     xmlns:pDFTools="clr-namespace:PDF_Office.Views.HomePanel.PDFTools"
     d:DesignHeight="450"
     d:DesignWidth="800"
+    Loaded="UserControl_Loaded"
     mc:Ignorable="d">
     <UserControl.Resources>
         <ResourceDictionary>
@@ -36,7 +37,7 @@
                        Orientation="Horizontal" />
             </ItemsPanelTemplate>
 
-            <Style x:Key="QuickToolsListBoxItemStyle" BasedOn="{StaticResource MoreListBoxItemStyle}"
+            <Style x:Key="QuickToolsListBoxItemStyle" BasedOn="{StaticResource ListBoxItemStyle}"
                TargetType="{x:Type customControl:ListItemQuickTool}">
                 <EventSetter Event="PreviewMouseLeftButtonUp"
                              Handler="QuickTools_Click"/>
@@ -73,14 +74,17 @@
                 Width="68"
                 Height="28"
                 Margin="0,0,0,0"
-                Background="#FFFFFF"
                 Content="Tools"
                 Click="BtnTools_Click"
                >
 
             </Button>
 
-
+            <customControl:CustomIconToggleBtn x:Name="BtnExptend"  Click="BtnExptend_Click"
+                                                        Style="{StaticResource ToggleBtnViewModeStyle}"
+                                                       >
+                <TextBlock Text="展开"/>
+            </customControl:CustomIconToggleBtn>
             <Button
                 x:Name="BtnMore"
                 Width="28"
@@ -101,7 +105,7 @@
             <customControl:ListBoxEx x:Name="ListBoxToolBars" HorizontalAlignment="Stretch"  MinWidth="540" 
                         Grid.Row="3"
                         AllowDrop="True"
-                        BorderThickness="0"
+                        BorderThickness="0" Background="Transparent"
                         SizeChanged="ListBoxShortCuts_SizeChanged"
                         ItemContainerStyle="{StaticResource QuickToolsListBoxItemStyle}"
                         ItemTemplate="{StaticResource DataTemplate}"

+ 30 - 37
PDF Office/Views/HomePanel/PDFTools/QuickToolsContent.xaml.cs

@@ -21,56 +21,38 @@ namespace PDF_Office.Views.HomePanel.PDFTools
         public QuickToolsContent()
         {
             InitializeComponent();
-            PDFtools = new PDFToolsHelper();
+            PDFtools = PDFToolsHelper.GetInstance();
             ListBoxToolBars.ItemsSource = PDFtools.QuickTools;
         }
    
 
         private void BtnMore_Click(object sender, RoutedEventArgs e)
         {
-            if (GridAllTools.Height != 270)
+        }
+
+        private void BtnExptend_Click(object sender, RoutedEventArgs e)
+        {
+            UpdateExptendUI();
+        }
+
+        private void UpdateExptendUI()
+        {
+            if ((bool)BtnExptend.IsChecked)
             {
                 GridAllTools.Height = 270;
-                ShowToolsUI(false);
             }
             else
             {
-                GridAllTools.Height = 184;
-                ShowToolsUI(true);
+                GridAllTools.Height = 174;
             }
-               
-        }
 
-        /// <summary>
-        /// 扩展收缩UI
-        /// </summary>
-        /// <param name="IsShowConciseContent">是否收缩</param>
-        private void ShowToolsUI(bool IsShowConciseContent)
-        {
-            //foreach (var item in ListBoxToolBars.Items)
-            //{
-               
-            //    var listBoxItem = ListBoxToolBars.ItemContainerGenerator.ContainerFromItem(item) as ListBoxItem;
-            //    if (listBoxItem != null)
-            //    {
-                   
-            //        var viewItem = listBoxItem.ContentTemplate;
-            //        var myContentPresenter = CommonHelper.FindVisualChild<ContentPresenter>(listBoxItem);
-            //        var obj = viewItem.FindName("data", myContentPresenter);
-
-            //        var checkNum = obj as PDFToolItem;
-
-            //        if (checkNum != null)
-            //        {
-            //            checkNum.IsShowConciseContent = IsShowConciseContent;
-            //        }
-
-            //    }
-            //}
-            
+            foreach (var item in PDFtools.QuickTools)
+            {
+                item.IsShowConciseContent = !(bool)BtnExptend.IsChecked;
+            }
         }
 
-      
+
 
         /// <summary>
         /// 编辑工具
@@ -101,12 +83,12 @@ namespace PDF_Office.Views.HomePanel.PDFTools
                 {
                     if (i % 4 != 0)
                     {
-                        listBoxItem.Margin = new Thickness(0, 0, margin, 20);
+                        listBoxItem.Margin = new Thickness(0, 0, margin, 0);
 
                     }
                     else
                     {
-                        listBoxItem.Margin = new Thickness(0, 0, 0, 20);
+                        listBoxItem.Margin = new Thickness(0, 0, 0, 0);
                     }
                     listBoxItem.Width = widthItem;
                 }
@@ -127,6 +109,17 @@ namespace PDF_Office.Views.HomePanel.PDFTools
                 veiwModel.QuickToolsCommand.Execute(toolItem);
             }
         }
+
+        private void UserControl_Loaded(object sender, RoutedEventArgs e)
+        {
+            if(ListBoxToolBars.Items != null)
+            {
+                UpdateExptendUI();
+                ListBoxToolBars.Items.Refresh();
+                ListBoxToolBarsWidthChanged();
+            }
+           
+        }
     }
 
 }

+ 70 - 7
PDFSettings/PDFToolsList.cs

@@ -1,32 +1,95 @@
 using System;
 using System.Collections.Generic;
+using System.ComponentModel;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 
 namespace PDFSettings
 {
-
+    /// <summary>
+    /// 所有工具列表
+    /// </summary>
     public class AllPDFToolsList : List<ToolItem>
     {
 
     }
 
+    /// <summary>
+    /// 快捷工具列表
+    /// </summary>
     public class QuickPDFToolsList : List<ToolItem>
     {
 
     }
 
-    public class ToolItem
+    public class ToolItem : INotifyPropertyChanged
     {
-        public bool IsShowConciseContent { get; set; }
-        public bool IsNewTool { get; set; }
-        public int Id { get; set; }
-        public int Tag { get; set; }
-        public string TagStr { get; set; }
+        public event PropertyChangedEventHandler PropertyChanged = delegate { };
+        private bool _isShowConciseContent = false;
+        /// <summary>
+        /// PDF工具集合UI是否显示为只有标题和图标的内容
+        /// </summary>
+        public bool IsShowConciseContent
+        {
+            get { return _isShowConciseContent; }
+            set
+            {
+                _isShowConciseContent = value;
+                PropertyChanged(this, new PropertyChangedEventArgs("IsShowConciseContent"));
+            }
+        }
+
+        #region 重要属性
+
+
+        /// <summary>
+        /// 是否为新增工具
+        /// </summary>
+        public bool IsNew { get; set; }
+
+        #region 工具类型
+
+        /// <summary>
+        /// 排序的PDF工具类型:优势工具、常用工具、付费工具等
+        /// </summary>
+        public int ToolType { get; set; }
+        /// <summary>
+        /// 某类型PDF工具的排序Id号
+        /// </summary>
+        public string strToolType { get; set; }
+        #endregion
+
+
+        #region 功能
+        /// <summary>
+        /// PDF工具某功能的枚举值:用来标识功能
+        /// </summary>
+        public int FnType { get; set; }
+        /// <summary>
+        /// 功能名称:拆分功能、合并功能、转档功能等
+        /// </summary>
+        public string strFnType { get; set; }
+        #endregion
+
+        #region 显示内容
+        /// <summary>
+        /// 图标路径
+        /// </summary>
         public string Image { get; set; }
+        /// <summary>
+        /// 功能说明内容
+        /// </summary>
         public string TitleInfo { get; set; }
+        /// <summary>
+        /// 功能标题
+        /// </summary>
         public string Title { get; set; }
+        #endregion
+
+        #endregion
+
+
 
     }