예제 #1
0
 protected override void OnKeyDown(KeyEventArgs e)
 {
     try
     {
         MultiSelectionTreeViewItem itemToSelect = null;
         if (e.Key == Key.Left)
         {
             this.IsExpanded = false;
         }
         else if (e.Key == Key.Right)
         {
             this.IsExpanded = true;
         }
         else if (e.Key == Key.Up)
         {
             int curentNodeIndex = this.ParentItemsControl.ItemContainerGenerator.IndexFromContainer(this);
             if (curentNodeIndex == 0)
             {
                 itemToSelect = this.ParentTreeViewItem;
             }
             else
             {
                 MultiSelectionTreeViewItem temp = null;
                 temp         = GetPreviousNodeAtSameLevel(this);
                 itemToSelect = GetLastVisibleChildNodeOf(temp);
             }
         }
         else if (e.Key == Key.Down)
         {
             if (this.IsExpanded && this.Items.Count > 0)
             {
                 itemToSelect = this.ItemContainerGenerator.ContainerFromIndex(0) as MultiSelectionTreeViewItem;
             }
             else
             {
                 itemToSelect = GetNexNodeAtSameLevel(this);
                 if (itemToSelect == null)
                 {
                     MultiSelectionTreeViewItem temp = this.ParentTreeViewItem;
                     while (itemToSelect == null && temp != null)
                     {
                         itemToSelect = GetNexNodeAtSameLevel(temp);
                         temp         = temp.ParentTreeViewItem;
                     }
                 }
             }
         }
         if (itemToSelect != null)
         {
             itemToSelect.Focus();
             itemToSelect.IsSelected = true;
             //TODO:Treeview逻辑
             ParentTreeView.OnViewItemMouseDown(itemToSelect);
         }
     }
     catch (Exception)
     {
         e.Handled = true;
     }
 }
예제 #2
0
 protected override void OnMouseDown(System.Windows.Input.MouseButtonEventArgs e)
 {
     if (ParentTreeView == null)
     {
         return;
     }
     if (e.LeftButton == MouseButtonState.Released && e.RightButton == MouseButtonState.Pressed)
     {
         return;
     }
     if (IsSelected == true)
     {
         IsSelected = false;
     }
     else if (IsSelected == false)
     {
         IsSelected = true;
     }
     else
     {
         IsSelected = false;
     }
     //TODO:逻辑父级需要做的逻辑
     ParentTreeView.OnViewItemMouseDown(this);
 }