Я хочу синхронизировать 2 прокрутки. Пожалуйста, дайте мне знать, как получить событие прокрутки обоих просмотрщиков прокрутки, а затем синхронизировать их обоих?
Синхронизировать 2 прокрутки Silverlight
Ответы (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);
}
Надеюсь это поможет!
person
vaibhav
schedule
01.06.2012
это сработает, просто переименуйте scrollviewers в те, которые вы используете. Я лично использовал этот код
- person vaibhav; 01.06.2012
Я пытался использовать это, но VisualTreeHelper.GetChild(scrollviewer1, 0) возвращает ошибку, я пробовал VisualTreeHelper.GetChildrenCount(scrollviewer1) и возвращает 0.
- person Marlon; 10.04.2017