同步滚动两个内容大小不同的 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);
我有这样的东西:
只要在 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);