Пример #1
0
        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);
                }
            }
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
 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);
         }
     }
 }