void ThumbDragStarted(object sender, DragStartedEventArgs e) { Thumb thumb = (Thumb)sender; ScrollBar scrollBar = thumb.GetParent <ScrollBar>(); bool isVertical = scrollBar.Orientation == Orientation.Vertical; // Update the content in the ToolTip ScrollingPreviewData data = new ScrollingPreviewData(); data.UpdateScrollingValues(scrollBar); data.UpdateItem(AssociatedObject as ItemsControl, isVertical); _previewToolTip = new ToolTip { PlacementTarget = (UIElement)sender, Placement = isVertical ? PlacementMode.Left : PlacementMode.Top, VerticalOffset = 0.0, HorizontalOffset = 0.0, ContentTemplate = (isVertical) ? VerticalScrollingPreviewTemplate : HorizontalScrollingPreviewTemplate, Content = data, IsOpen = true }; }
void ScrollBar_Scroll(object sender, ScrollEventArgs e) { ScrollBar scrollBar = (ScrollBar)sender; if (_previewToolTip != null) { // The ScrollBar's value isn't updated quite yet, so wait until Input priority AssociatedObject.Dispatcher.BeginInvoke((Action)(() => { ScrollingPreviewData data = (ScrollingPreviewData)_previewToolTip?.Content; data?.UpdateScrollingValues(scrollBar); data?.UpdateItem(AssociatedObject as ItemsControl, scrollBar.Orientation == Orientation.Vertical); } ), DispatcherPriority.Input); } }
void ThumbDragStarted(object sender, DragStartedEventArgs e) { _previewToolTip = new ToolTip(); ScrollingPreviewData data = new ScrollingPreviewData(); _previewToolTip.Content = data; // Update the content in the ToolTip data.UpdateScrollingValues(AssociatedObject); // Set the Placement and the PlacementTarget _previewToolTip.PlacementTarget = (UIElement)sender; _previewToolTip.Placement = AssociatedObject.Orientation == Orientation.Vertical ? PlacementMode.Left : PlacementMode.Top; _previewToolTip.VerticalOffset = 0.0; _previewToolTip.HorizontalOffset = 0.0; _previewToolTip.ContentTemplate = ScrollingPreviewTemplate; _previewToolTip.IsOpen = true; }