c# - 每当在 wpf 中滚动任何一个时,两个 ScrollViewer 的同步滚动

标签 c# .net wpf scrollviewer

我已经完成了线程:

binding two VerticalScrollBars one to another

它几乎帮助实现了目标,但仍然缺少一些东西。左右移动滚动条或上下移动滚动条会在我的两个滚动查看器中产生预期的滚动行为,但是当我们尝试使用/单击滚动查看器中这些滚动条末端的箭头按钮进行滚动时,只有一个滚动查看器被滚动,而不是预期的行为。

那么我们还需要添加/编辑什么来解决这个问题?

最佳答案

一种方法是使用 ScrollChanged 事件来更新另一个 ScrollViewer

<ScrollViewer Name="sv1" Height="100" 
              HorizontalScrollBarVisibility="Auto"
              ScrollChanged="ScrollChanged">
    <Grid Height="1000" Width="1000" Background="Green" />
</ScrollViewer>

<ScrollViewer Name="sv2" Height="100" 
              HorizontalScrollBarVisibility="Auto"
              ScrollChanged="ScrollChanged">
    <Grid Height="1000" Width="1000" Background="Blue" />
</ScrollViewer>

private void ScrollChanged(object sender, ScrollChangedEventArgs e)
    {
        if (sender == sv1)
        {
            sv2.ScrollToVerticalOffset(e.VerticalOffset);
            sv2.ScrollToHorizontalOffset(e.HorizontalOffset);
        }
        else
        {
            sv1.ScrollToVerticalOffset(e.VerticalOffset);
            sv1.ScrollToHorizontalOffset(e.HorizontalOffset);
        }
    }

关于c# - 每当在 wpf 中滚动任何一个时,两个 ScrollViewer 的同步滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15151974/

相关文章:

c# - 将实体添加到 Stanford NLP NER 分类器

c# - 读取 NetworkStream 不会推进流

c# - DataTemplate 内的 DataTemplate - ListBox 内的 ListBox

.net - 命名空间在其他项目中不可用

c# - 以编程方式将标题设置为 XtraReport 中的查看器表单

c# 创建日志文件的最佳方法

c# - 截取的屏幕截图仅包含黑色像素

wpf - 如何改变Combobox下拉面板的背景色

c# - WPF 快速转换器 : Hide element on empty list

wpf - 如何实现文本框的绑定(bind)验证?