private static void HandlesMouseWheelScrollingChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var scrollViewer = d as ScrollViewer ?? d.FindVisualChildOfType<ScrollViewer>(); if (scrollViewer != null) { // Yet another internal property that should be public. typeof(ScrollViewer).GetProperty("HandlesMouseWheelScrolling", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(scrollViewer, e.NewValue); } else { // The framework element is not loaded yet and thus the ScrollViewer is not reachable. var frameworkElement = d as FrameworkElement; if (frameworkElement != null && !frameworkElement.IsLoaded) { // Let's delay the behavior till the scroll viewer is loaded. frameworkElement.Loaded += (sender, args) => { var dependencyObject = (DependencyObject)sender; var loadedScrollViewer = dependencyObject.FindVisualChildOfType<ScrollViewer>(); if (loadedScrollViewer != null) typeof(ScrollViewer).GetProperty("HandlesMouseWheelScrolling", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(loadedScrollViewer, e.NewValue); }; } } }