【问题标题】:Synchronise 2 scrollviewers silverlight同步 2 个滚动查看器 silverlight
【发布时间】:2012-06-01 19:41:18
【问题描述】:

我想同步 2 个滚动查看器。请让我知道如何获取两个滚动查看器的滚动事件,然后将它们同步?

【问题讨论】:

    标签: silverlight scrollviewer


    【解决方案1】:

    首先获取要同步的滚动查看器的 2 个滚动条。 在这种情况下,scrollviewer1scrollviewer2 然后我们得到两个滚动条的事件处理程序,在这种情况下是垂直的。然后我们可以通过事件轻松地同步它们。 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);
        }
    

    希望这会有所帮助!

    【讨论】:

    • 它会起作用,只需用您正在使用的滚动查看器重命名即可。我个人用过这段代码
    • 我尝试过使用它,但是 VisualTreeHelper.GetChild(scrollviewer1, 0) 返回错误,我尝试过 VisualTreeHelper.GetChildrenCount(scrollviewer1) 并返回 0。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 2011-10-16
    相关资源
    最近更新 更多