Синхронизировать 2 прокрутки просмотра Silverlight
Я хочу синхронизировать 2 прокрутки. Пожалуйста, дайте мне знать, как получить событие прокрутки обоих scrollviewers, а затем синхронизировать их обоих?
1 ответ
Решение
Сначала получите 2 полосы прокрутки у тех, кто хочет синхронизировать их. В этом случае, scrollviewer1
а также scrollviewer2
Затем мы получаем обработчики событий обеих полос прокрутки, в данном случае вертикальные. Тогда мы можем легко синхронизировать их по событиям. ScrollToVerticalOffset
будет прокручивать согласно другому.
ScrollBar vertical1 = ((FrameworkElement)VisualTreeHelper.GetChild(scrollviewer1, 0)).FindName("VerticalScrollBar") as ScrollBar;
vertical1.ValueChanged += new RoutedPropertyChangedEventHandler<double>(vertical1_ValueChanged);
ScrollBar vertical2 = ((FrameworkElement)VisualTreeHelper.GetChild(scrollviewer2, 0)).FindName("VerticalScrollBar") as ScrollBar;
vertical2.ValueChanged += new RoutedPropertyChangedEventHandler<double>(vertical2_ValueChanged);
void vertical1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
scrollviewer2.ScrollToVerticalOffset(e.NewValue);
}
void vertical2_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
scrollviewer1.ScrollToVerticalOffset(e.NewValue);
}
Надеюсь это поможет!