private void PreselectItem([NotNull] object sender, [NotNull] MouseButtonEventArgs e) { Debug.ArgumentNotNull(sender, nameof(sender)); Debug.ArgumentNotNull(e, nameof(e)); var treeViewItem = TreeViewItemExtensions.VisualUpwardSearch <TreeViewItem>(e.OriginalSource as DependencyObject) as TreeViewItem; if (treeViewItem != null) { treeViewItem.IsSelected = true; } }
static void OnGotFocus(object sender, RoutedEventArgs e) { SelectedItemOnMouseUp = null; if (!e.OriginalSource.Is <TreeView>()) { var Item = (e.OriginalSource as DependencyObject).GetVisualParent <TreeViewItem>(); if (Item != null && Item.Is <TreeViewItem>()) { if (Mouse.LeftButton == MouseButtonState.Pressed && TreeViewItemExtensions.GetIsSelected(Item) && Keyboard.Modifiers != ModifierKeys.Control) { SelectedItemOnMouseUp = Item; } else if (sender is TreeViewExt && TreeViewExtensions.GetSelectionMode(sender as TreeView) == TreeViewSelectionMode.Single) { TreeViewExtensions.SelectItem(sender as TreeView, Item); } else { (sender as TreeViewExt).SelectItems(Item); } } } }