private void addNextItems(VirtualizingIEnumerable <T> sourceToAdd, int nItems) { sourceToAdd.AddNextItems(nItems); if (!sourceToAdd.HasNext) { // all items from IEnumerable have been added this.itemsSourceTotalCount = sourceToAdd.Count; } }
public void SetItemsSource(IEnumerable <ITreeNode> value) { 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 ITextEditor editor; var viewContent = WorkbenchSingleton.Workbench.ActiveViewContent; ITextEditorProvider provider = viewContent as ITextEditorProvider; if (provider != null) { editor = provider.TextEditor; } else { editor = viewContent.GetService(typeof(ITextEditor)) as ITextEditor; } 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>(observable); 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; } }
private void Button_Click(object sender, RoutedEventArgs e) { if (!DebuggerService.IsDebuggerStarted) { return; } // refresh content ITreeNode node = ((FrameworkElement)e.OriginalSource).DataContext as ITreeNode; var resultNode = currentDebugger.GetNode(node.FullName, node.ImageName); if (resultNode == null) { return; } // HACK for updating the pins in tooltip var observable = new ObservableCollection <ITreeNode>(); var source = lazyGrid.ItemsSource; source.ForEach(item => { if (item.CompareTo(node) == 0) { observable.Add(resultNode); } else { observable.Add(item); } }); Mark.Nodes = observable; // update UI var newSource = new VirtualizingIEnumerable <ITreeNode>(observable); lazyGrid.ItemsSource = newSource; lazyExpandersGrid.ItemsSource = newSource; }