Синхронизированная прокрутка двух ScrollViewer с различным размером контента - PullRequest
0 голосов
/ 23 мая 2018

У меня есть что-то вроде этого:

Синхронизированная прокрутка двух ScrollViewer всякий раз, когда любой из них прокручивается в 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 голосов
/ 23 мая 2018

Вы должны рассчитать позицию прокрутки в долях от общего числа:

После изменения scrolloffset на sv1 попробуйте что-то вроде

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