/// <summary> /// Handles changes to the AnimatedScrollHandler property. /// </summary> /// <param name="d"> /// The <see cref="DependencyObject"/> on which /// the property has changed value. /// </param> /// <param name="e"> /// Event data that is issued by any event that /// tracks changes to the effective value of this property. /// </param> private static void OnAnimatedScrollHandlerChanged( DependencyObject d, DependencyPropertyChangedEventArgs e) { ScrollViewerAnimatedScrollHandler oldAnimatedScrollHandler = (ScrollViewerAnimatedScrollHandler)e.OldValue; ScrollViewerAnimatedScrollHandler newAnimatedScrollHandler = (ScrollViewerAnimatedScrollHandler)d.GetValue(AnimatedScrollHandlerProperty); var scrollViewer = d as ScrollViewer; Debug.Assert(scrollViewer != null); if (oldAnimatedScrollHandler != null) { oldAnimatedScrollHandler.Detach(); } if (newAnimatedScrollHandler != null) { newAnimatedScrollHandler.Attach(scrollViewer); } }