public void ForceMouseWheelEvent(ScrollViewer scrollViewer, MouseWheelEventArgs e) { // Since the current ScrollViewer isn't able to scroll, push the event to the first parent who can int index = ScrollViewers.IndexOf(scrollViewer); if (index > -1) { for (int i = index - 1; i >= 0; --i) { var parentScrollViewer = ScrollViewers[i]; if (ScrollViewerBehavior.CanScroll(parentScrollViewer, e.Delta)) { e.Handled = true; // Since we will trigger our own MouseWheelEvent on the right ScrollViewer, // handle all the chain of preview events (fake and real) HandleEvents(); var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta); eventArg.RoutedEvent = UIElement.MouseWheelEvent; eventArg.Source = scrollViewer; parentScrollViewer.RaiseEvent(eventArg); break; } } } }
private void AutoScrollContextMenuOnUnchecked(object sender, RoutedEventArgs e) { ScrollViewerBehavior.Detach(); }