Browse Source

大纲-取消选中

zhuyi 2 years ago
parent
commit
c4d9d35772

+ 2 - 0
PDF Office/Views/BOTA/OutLineControl.xaml

@@ -10,6 +10,8 @@
     xmlns:model="clr-namespace:PDF_Master.Model.BOTA"
     xmlns:mainPageLoader="clr-namespace:PDF_Master.Strings.MainPage"
     d:DataContext="{d:DesignInstance Type=bota:OutLineControlViewModel}"
+    LostFocus="UserControl_LostFocus"
+    KeyDown="UserControl_KeyDown"
     mc:Ignorable="d">
     <UserControl.Resources>
         <ResourceDictionary>

+ 28 - 3
PDF Office/Views/BOTA/OutLineControl.xaml.cs

@@ -449,9 +449,12 @@ namespace PDF_Master.Views.BOTA
             int ItemIndex = (DataContext as OutLineControlViewModel).InsertChlidOutline((sender as MenuItem).DataContext as OutlineNode);
             OutlineView.UpdateLayout();
             OutlineNode node = (DataContext as OutLineControlViewModel).FindOutlineFromList((DataContext as OutLineControlViewModel).Outlinelist, (OutlineView.SelectedItem as OutlineNode).Chlidlist[ItemIndex], ItemIndex);
-            node.IsSelected = true;
-            ReNameOutlineNode = node;
-            node.IsReName = Visibility.Collapsed;
+            if (node != null)
+            {
+                node.IsSelected = true;
+                ReNameOutlineNode = node;
+                node.IsReName = Visibility.Collapsed;
+            }
         }
 
         private void OutlineView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
@@ -466,5 +469,27 @@ namespace PDF_Master.Views.BOTA
                 OutlineView.Focus();
             }
         }
+
+        private void UserControl_LostFocus(object sender, RoutedEventArgs e)
+        {
+            OutlineNode outlineNode = OutlineView.SelectedItem as OutlineNode;
+            if (outlineNode != null)
+            {
+                outlineNode.IsSelected = false;
+            }
+        }
+
+        private void UserControl_KeyDown(object sender, KeyEventArgs e)
+        {
+            if (e.Key == Key.Escape)
+            {
+                OutlineNode outlineNode = OutlineView.SelectedItem as OutlineNode;
+                if (outlineNode != null)
+                {
+                    outlineNode.IsSelected = false; 
+                    e.Handled = true;
+                }
+            }
+        }
     }
 }