Explorar o código

综合-搜索功能高保真,部分bug修复

zhuyi %!s(int64=2) %!d(string=hai) anos
pai
achega
513e8ef26d

+ 1 - 0
PDF Office/Helper/RichTextBoxHelper.cs

@@ -215,6 +215,7 @@ namespace PDF_Office.Helper
                 if (textappend.Equals(keyword, StringComparison.OrdinalIgnoreCase))
                 {
                     textRun.Background = new SolidColorBrush(textColor);
+                    textRun.FontWeight = FontWeight.FromOpenTypeWeight(600);
                 }
                 addBlock.Inlines.Add(textRun);
                 }

+ 26 - 1
PDF Office/Styles/PathButtonStyle.xaml

@@ -119,7 +119,32 @@
                             <Setter TargetName="PART_PressIcon" Property="Visibility" Value="Collapsed" />
                             <Setter TargetName="PART_CheckedIcon" Property="Visibility" Value="Visible" />
                         </Trigger>
-
+                        <MultiTrigger>
+                            <MultiTrigger.Conditions>
+                                <Condition Property="IsMouseOver" Value="True" />
+                                <Condition Property="IsChecked" Value="True" />
+                            </MultiTrigger.Conditions>
+                            <Setter TargetName="PART_Content" Property="Foreground" Value="{Binding MouseOverForeground, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type customControl:PathButton}}}" />
+                            <Setter TargetName="PART_Border" Property="Background" Value="{Binding MouseOverBackground, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type customControl:PathButton}}}" />
+                            <Setter TargetName="PART_Border" Property="BorderBrush" Value="{Binding MouseOverBorderBrush, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type customControl:PathButton}}}" />
+                            <Setter TargetName="PART_MouseOverIcon" Property="Visibility" Value="Collapsed" />
+                            <Setter TargetName="PART_Icon" Property="Visibility" Value="Collapsed" />
+                            <Setter TargetName="PART_PressIcon" Property="Visibility" Value="Collapsed" />
+                            <Setter TargetName="PART_CheckedIcon" Property="Visibility" Value="Visible" />
+                        </MultiTrigger>
+                        <MultiTrigger>
+                            <MultiTrigger.Conditions>
+                                <Condition Property="IsPressed" Value="True" />
+                                <Condition Property="IsChecked" Value="True" />
+                            </MultiTrigger.Conditions>
+                            <Setter TargetName="PART_Content" Property="Foreground" Value="{Binding MouseOverForeground, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type customControl:PathButton}}}" />
+                            <Setter TargetName="PART_Border" Property="Background" Value="{Binding MouseOverBackground, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type customControl:PathButton}}}" />
+                            <Setter TargetName="PART_Border" Property="BorderBrush" Value="{Binding MouseOverBorderBrush, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type customControl:PathButton}}}" />
+                            <Setter TargetName="PART_MouseOverIcon" Property="Visibility" Value="Collapsed" />
+                            <Setter TargetName="PART_Icon" Property="Visibility" Value="Collapsed" />
+                            <Setter TargetName="PART_PressIcon" Property="Visibility" Value="Collapsed" />
+                            <Setter TargetName="PART_CheckedIcon" Property="Visibility" Value="Visible" />
+                        </MultiTrigger>
                         <Trigger SourceName="PART_Content" Property="Text" Value="">
                             <Setter TargetName="PART_Content" Property="Visibility" Value="Collapsed" />
                         </Trigger>

+ 2 - 2
PDF Office/ViewModels/BOTA/SearchContentViewModel.cs

@@ -86,7 +86,7 @@ namespace PDF_Office.ViewModels.BOTA
         List<string> HistorySearchText = new List<string>();
         const int MaxHistoryCount = 10;
 
-        private bool caseInsensitive;
+        private bool caseInsensitive = true;
 
         public bool CaseInsensitive
         {
@@ -107,7 +107,7 @@ namespace PDF_Office.ViewModels.BOTA
         {
             textSearch = new PDFTextSearch();
             SearchItemList = new ObservableCollection<SearchItem>();
-            MyProperty = new ObservableCollection<string>() { "1", "2"};
+            MyProperty = new ObservableCollection<string>() { "1", "2" };
             SearchChangedCommand = new DelegateCommand<object>(SearchChanged);
             CleanCommand = new DelegateCommand(clean);
 

+ 3 - 1
PDF Office/ViewModels/Dialog/ToolsDialogs/MergeDialogViewModel.cs

@@ -231,6 +231,8 @@ namespace PDF_Office.ViewModels.Dialog.ToolsDialogs
             }
 
             SaveFileDialog saveFileDialog = new SaveFileDialog();
+            saveFileDialog.FileName = "Untitle";
+            saveFileDialog.Filter = "PDF|*.pdf;";
             if (saveFileDialog.ShowDialog() == false)
             {
                 return;
@@ -287,7 +289,7 @@ namespace PDF_Office.ViewModels.Dialog.ToolsDialogs
 
             bool saveResult = SaveDoc.WriteToFilePath(path);
             SaveDoc.Release();
-
+            CommonHelper.ShowFileBrowser(path);
             DialogParameters valuePairs = new DialogParameters();
             valuePairs.Add(ParameterNames.FilePath, path);
             RequestClose.Invoke(new DialogResult(ButtonResult.OK, valuePairs));

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 187 - 32
PDF Office/Views/BOTA/SearchContent.xaml


+ 55 - 4
PDF Office/Views/BOTA/SearchContent.xaml.cs

@@ -30,7 +30,8 @@ namespace PDF_Office.Views.BOTA
         {
             InitializeComponent();
         }
-
+        List<string> HistorySearchText = new List<string>();
+        const int MaxHistoryCount = 10;
         private void TextBox_KeyDown(object sender, KeyEventArgs e)
         {
             if (e.Key==Key.Enter)
@@ -41,6 +42,13 @@ namespace PDF_Office.Views.BOTA
                     return;
                 }
                 (DataContext as SearchContentViewModel).SearchText(text.Text);
+                 HistorySearchText.Remove(text.Text);
+                if (HistorySearchText.Count >= MaxHistoryCount)
+                {
+                    HistorySearchText.RemoveAt(0);
+                }
+                HistorySearchText.Add(text.Text);
+                UpDataItem();
             }
         }
 
@@ -49,9 +57,9 @@ namespace PDF_Office.Views.BOTA
         /// </summary>
         private void BtnExptend_Click(object sender, RoutedEventArgs e)
         {
-            var btn = sender as CustomIconToggleBtn;
+            var btn = sender as PathButton;
             if (btn == null) return;
-
+            btn.IsChecked = !btn.IsChecked;
 
             var item = (sender as FrameworkElement).DataContext as CollectionViewGroup;
             if (item != null)
@@ -99,9 +107,52 @@ namespace PDF_Office.Views.BOTA
             ContextSearchText.Placement = System.Windows.Controls.Primitives.PlacementMode.Bottom;
             ContextSearchText.IsOpen = true;
         }
+        private void UpDataItem()
+        {
+            foreach (var item in ContextSearchText.Items)
+            {
+                if (item is MenuItem)
+                {
+                    (item as MenuItem).Click -= SearchContent_Click;
+                }
+            }
+            ContextSearchText.Items.Clear();
+            ContextSearchText.Items.Add(IgnoreItem);
+            ContextSearchText.Items.Add(IgnoreSeparator);
+
+            foreach (var item in HistorySearchText)
+            {
+                MenuItem Searchitem = new MenuItem();
+                Searchitem.Height = 32;
+                Searchitem.Header = item;
+
+                Searchitem.Padding = new Thickness(0, 7, 0, 7);
+
+                Searchitem.Click += SearchContent_Click;
+                ContextSearchText.Items.Add(Searchitem);
+            }
+
+            if (HistorySearchText.Count>0)
+            {
+                ContextSearchText.Items.Add(ClearSeparator);
+                ContextSearchText.Items.Add(ClearItem);
+            }
+        }
+
+        private void SearchContent_Click(object sender, RoutedEventArgs e)
+        {
+            MenuItem item = sender as MenuItem;
+            if (item != null)
+            {
+                SearchText.Text = item.Header.ToString();
+                (DataContext as SearchContentViewModel).SearchText(SearchText.Text);
+            }
+        }
 
-        private void MenuItem_Click(object sender, RoutedEventArgs e)
+        private void ClearItem_Click(object sender, RoutedEventArgs e)
         {
+            HistorySearchText.Clear();
+            UpDataItem();
         }
     }
 }