protected override void OnKeyDown(KeyEventArgs e)
{
if (!e.Handled)
{
if (!TemplatedParentHandlesScrolling)
{
// Parent is not going to handle scrolling; do so here
bool control = (ModifierKeys.Control == (Keyboard.Modifiers & ModifierKeys.Control));
bool handled = true;
switch (e.Key)
{
case Key.Up:
ScrollInfo.LineUp ();
break;
case Key.Down:
ScrollInfo.LineDown ();
break;
case Key.Left:
ScrollInfo.LineLeft ();
break;
case Key.Right:
ScrollInfo.LineRight ();
break;
case Key.PageUp:
ScrollInfo.PageUp ();
break;
case Key.PageDown:
ScrollInfo.PageDown ();
break;
case Key.Home:
if (!control)
SetScrollOffset (Orientation.Horizontal, double.MinValue);
else
SetScrollOffset (Orientation.Vertical, double.MinValue);
break;
case Key.End:
if (!control)
SetScrollOffset (Orientation.Horizontal, double.MaxValue);
else
SetScrollOffset (Orientation.Vertical, double.MaxValue);
break;
default:
handled = false;
break;
}
if (handled)
e.Handled = true;
}
}
base.OnKeyDown (e);
}