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; }
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; } }
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; } }