private void VerticalScrollBar_Scroll(object sender, ScrollEventArgs e) {
if (_scroller == null) {
return;
}
switch (e.ScrollEventType) {
// page up/down
case ScrollEventType.LargeDecrement:
_scroller.EnqueueCommand(GridUpdateType.PageUp, 1);
break;
case ScrollEventType.LargeIncrement:
_scroller.EnqueueCommand(GridUpdateType.PageDown, 1);
break;
// line up/down
case ScrollEventType.SmallDecrement:
_scroller.EnqueueCommand(GridUpdateType.LineUp, 1);
break;
case ScrollEventType.SmallIncrement:
_scroller.EnqueueCommand(GridUpdateType.LineDown, 1);
break;
// scroll to here
case ScrollEventType.ThumbPosition:
_scroller.EnqueueCommand(GridUpdateType.SetVerticalOffset, ComputeVerticalOffset(e), ThumbTrack.None);
break;
// thumb drag
case ScrollEventType.ThumbTrack:
_scroller.EnqueueCommand(GridUpdateType.SetVerticalOffset, ComputeVerticalOffset(e), ThumbTrack.Track);
break;
case ScrollEventType.EndScroll:
_scroller.EnqueueCommand(GridUpdateType.SetVerticalOffset, ComputeVerticalOffset(e), ThumbTrack.End);
break;
// home/end (scroll to limit)
case ScrollEventType.First:
_scroller.EnqueueCommand(GridUpdateType.SetVerticalOffset, ComputeVerticalOffset(e), ThumbTrack.None);
break;
case ScrollEventType.Last:
_scroller.EnqueueCommand(GridUpdateType.SetVerticalOffset, ComputeVerticalOffset(e), ThumbTrack.None);
break;
default:
break;
}
}