How to detect the scrollbar has changed in a ScrollViewer in Silverlight


Unfortunately there is no direct event on the ScrollViewer to detect change on the scrollbar.  You need to get at the children directly.  Here's how to detect change on a vertical scrollbar in the ScrollViewer

ScrollBar
verticalScrollBar = ((FrameworkElement)VisualTreeHelper.GetChild(viewer, 0)).FindName("VerticalScrollBar") as ScrollBar;
verticalScrollBar.ValueChanged += (s, ev) => button.Visibility = System.Windows.
Visibility.Collapsed;

Don't add this code in the constructor, put it in the Loaded event handler of the child contained in the ScrollViewer.