Синхронизировать 2 прокрутки Silverlight

Я хочу синхронизировать 2 прокрутки. Пожалуйста, дайте мне знать, как получить событие прокрутки обоих просмотрщиков прокрутки, а затем синхронизировать их обоих?


person user1425606    schedule 01.06.2012    source источник


Ответы (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
comment
это сработает, просто переименуйте scrollviewers в те, которые вы используете. Я лично использовал этот код - person vaibhav; 01.06.2012
comment
Я пытался использовать это, но VisualTreeHelper.GetChild(scrollviewer1, 0) возвращает ошибку, я пробовал VisualTreeHelper.GetChildrenCount(scrollviewer1) и возвращает 0. - person Marlon; 10.04.2017