In the general case, the values of HorizontalOffsetand are VerticalOffsetnot updated, except during the event LayoutUpdatedafter ScrollContentPresenter(or another IScrollInfo) updated its value and called InvalidateScrollInfo (). The only exception is that DependencyProperty for each of them is updated during deferred scrolling (but it is surprising that the corresponding CLR property is not updated), but this is probably not applicable in your case.
There are no events ScrollToHorizontalOffsetor 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 nextLayoutUpdated`, so if all you want to do is make sure that scrolling occurs, just send a command or call a method.
If you want to make sure that HorizontalOffsetor are VerticalOffsetindeed updated as desired, you can simply catch ScrollChangedEventwhich starts after updating the values, for example:
scrollViewer.ScrollChanged += (obj, e) =>
{
// Get offset information from 'e' or from scrollViewer
}
, " LayoutUpdated(), ", , LayoutUpdated() ", . , , , ScrollChanged.