using System.Windows.Controls; namespace Blois.Utils { /// /// Simple class to make all scrollviewers in an application scrollable. /// public static class ScrollableScrollViewer { private static bool initialized = false; public static void Initialize() { if (!ScrollableScrollViewer.initialized) { MouseWheelGenerator.MouseWheelEvent.RegisterClassHandler(typeof(ScrollViewer), ScrollableScrollViewer.HandleMouseWheel, false); ScrollableScrollViewer.initialized = true; } } private static void HandleMouseWheel(object sender, MouseWheelEventArgs e) { ScrollViewer sv = (ScrollViewer)sender; double verticalOffset = sv.VerticalOffset; if (e.Delta > 0 && verticalOffset > 0) { sv.ScrollToVerticalOffset(verticalOffset - e.Delta * 50); e.Handled = true; } else if (e.Delta < 0 && verticalOffset < sv.ScrollableHeight) { sv.ScrollToVerticalOffset(verticalOffset - e.Delta * 50); e.Handled = true; } } } }