Синхронизировать 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);
    }

Надеюсь это поможет!

Другие вопросы по тегам