public void SetItemsSource(IEnumerable <ITreeNode> value)
        {
            if (value == null)
            {
                return;
            }

            this.itemsSource = value;
            this.lazyGrid    = new LazyItemsControl <ITreeNode>(this.dataGrid, InitialItemsCount);

//			// HACK for updating the pins in tooltip
//			var observable = new List<ITreeNode>();
//			this.itemsSource.ForEach(item => observable.Add(item));
//
//			// verify if at the line of the root there's a pin bookmark
//			ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
//			var editor = provider.TextEditor;
//			if (editor != null) {
//				var pin = BookmarkManager.Bookmarks.Find(
//					b => b is PinBookmark &&
//					b.Location.Line == logicalPosition.Line &&
//					b.FileName == editor.FileName) as PinBookmark;
//
//				if (pin != null) {
//					observable.ForEach(item => { // TODO: find a way not to use "observable"
//					                    if (pin.ContainsNode(item))
//					                        item.IsPinned = true;
//					                   });
//				}
//			}

            var source = new VirtualizingIEnumerable <ITreeNode>(value);

            lazyGrid.ItemsSource = source;
            this.dataGrid.AddHandler(ScrollViewer.ScrollChangedEvent, new ScrollChangedEventHandler(handleScroll));

            if (this.lazyGrid.ItemsSourceTotalCount != null)
            {
                // hide up/down buttons if too few items
                btnUp.Visibility = btnDown.Visibility =
                    this.lazyGrid.ItemsSourceTotalCount.Value <= VisibleItemsCount ? Visibility.Collapsed : Visibility.Visible;
            }
        }
        public void SetItemsSource(IEnumerable <ITreeNode> value)
        {
            if (value == null)
            {
                return;
            }

            this.itemsSource = value;
            this.lazyGrid    = new LazyItemsControl <ITreeNode>(this.dataGrid, InitialItemsCount);

            var source = new VirtualizingIEnumerable <ITreeNode>(value);

            lazyGrid.ItemsSource = source;
            this.dataGrid.AddHandler(ScrollViewer.ScrollChangedEvent, new ScrollChangedEventHandler(handleScroll));

            if (this.lazyGrid.ItemsSourceTotalCount != null)
            {
                // hide up/down buttons if too few items
                btnUp.Visibility = btnDown.Visibility =
                    this.lazyGrid.ItemsSourceTotalCount.Value <= VisibleItemsCount ? Visibility.Collapsed : Visibility.Visible;
            }
        }