public void SelectItems(IEnumerable <TreeNodeData> items) { if (sharpTreeView.SelectionMode == SelectionMode.Single) { sharpTreeView.SelectedItem = null; } else { sharpTreeView.SelectedItems.Clear(); } var nodes = items.Where(a => !(a is null)).Select(a => (TreeNodeImpl)a.TreeNode).ToArray(); if (nodes.Length > 0) { sharpTreeView.FocusNode(nodes[0].Node); sharpTreeView.SelectedItem = nodes[0].Node; } foreach (var node in nodes) { if (sharpTreeView.SelectionMode == SelectionMode.Single) { sharpTreeView.SelectedItem = node.Node; break; } else { sharpTreeView.SelectedItems.Add(node.Node); } } }
public void SelectItems(IEnumerable <ITreeNodeData> items) { sharpTreeView.SelectedItems.Clear(); var nodes = items.Where(a => a != null).Select(a => (TreeNodeImpl)a.TreeNode).ToArray(); if (nodes.Length > 0) { sharpTreeView.FocusNode(nodes[0].Node); sharpTreeView.SelectedItem = nodes[0].Node; // FocusNode() should already call ScrollIntoView() but for some reason, // ScrollIntoView() does nothing so add another call. // Background priority won't work, we need ContextIdle prio sharpTreeView.Dispatcher.BeginInvoke(DispatcherPriority.ContextIdle, new Action(() => { var item = sharpTreeView.SelectedItem as SharpTreeNode; if (item != null) { sharpTreeView.ScrollIntoView(item); } })); } foreach (var node in nodes) { sharpTreeView.SelectedItems.Add(node.Node); } }
public void SelectNode(SharpTreeNode obj) { if (obj != null) { if (!obj.AncestorsAndSelf().Any(node => node.IsHidden)) { // Set both the selection and focus to ensure that keyboard navigation works as expected. treeView.FocusNode(obj); treeView.SelectedItem = obj; } else { MessageBox.Show("Navigation failed because the target is hidden or a compiler-generated class.\n" + "Please disable all filters that might hide the item (i.e. activate " + "\"View > Show internal types and members\") and try again.", "ILSpy", MessageBoxButton.OK, MessageBoxImage.Exclamation); } } }