同步滚动两个具有不同内容大小的ScrollViewer

时间:2018-05-23 06:55:50

标签: c# wpf xaml scrollviewer

我有这样的事情:

Synchronized scrolling of two ScrollViewers whenever any one is scrolled in wpf

问题是Scrollviewer内容的大小不同。

我设法计算了条形的比例运动但没有考虑条形的大小,它们彼此不同:

sv2.ScrollToHorizontalOffset(e.HorizontalOffset * (sv1.Width / grid1.Width) / (sv2.Width / grid2.Width));

sv1.ScrollToHorizontalOffset(e.HorizontalOffset * (sv2.Width / grid2.Width) / (sv1.Width / grid1.Width));

enter image description here

它只协调条形的开始,无论它们的大小如何。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您必须以总数的一小部分计算滚动位置:

在sv1上的scrolloffset更改后尝试类似

var scFract = sv1.HorizontalOffset / sv1.ScrollableWith;
sv2.ScrollToHorizontalOffset(sv2.ScrollableWith * scFract);