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;
                }
            }
        }
    }
Exemple #2
0
 private void AutoScrollContextMenuOnUnchecked(object sender, RoutedEventArgs e)
 {
     ScrollViewerBehavior.Detach();
 }