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

Synchronized scrolling of two ScrollViewers with different content sizes

我有这样的东西:

只要在 wpf 中滚动任何一个,就会同步滚动两个 ScrollViewer

问题是 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));

它只协调条形的开始,而不考虑它们的大小。有什么想法吗?

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

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

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