В целом значения HorizontalOffset
и VerticalOffset
не обновляется, за исключением во время LayoutUpdated
события после ScrollContentPresenter
(или другого IScrollInfo
) обновило свое значение и называется InvalidateScrollInfo(). Единственное исключение заключается в том, что DependencyProperty для каждого из них обновляется во время отложенной прокрутки (но удивительно, что соответствующее свойство CLR не обновляется), но это, вероятно, не применимо в вашем случае.
Нет ScrollToHorizontalOffset
или ScrollToVerticalOffset events in WPF, but there is both a ScrollViewer method and a RoutedCommand of these names. Both the command version and the method version remember your request and execute it at the next
LayoutUpdated`, поэтому, если все, что вы хотите сделать, это убедиться, что прокрутка происходит, просто отправьте команду или вызовите метод.
Если вы хотите, чтобы убедиться, что HorizontalOffset
или VerticalOffset
действительно был обновлен при желании вы можете просто поймать ScrollChangedEvent
, который срабатывает после значения были обновлены, например:
scrollViewer.ScrollChanged += (obj, e) =>
{
// Get offset information from 'e' or from scrollViewer
}
Я не понял, что вы подразумеваете под «Я пробовал метод LayoutUpdated(), но он идет в бесконечном цикле», поскольку вы не объяснили, что такое метод LayoutUpdated(), но приведенная выше информация должна сделать порядок событий ясным и помочь вам ваш путь к решению. В любом случае вся информация, необходимая для принятия решения, должна быть доступна из события ScrollChanged
.