protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
if (!e.Handled)
{
Key key = e.Key;
switch (key)
{
case Key.Left:
if (IsExpanded)
{
IsExpanded = false;
}
else
{
ParentTreeView.Selection.SelectParentFromKey();
}
e.Handled = true;
break;
case Key.Right:
if (CanExpand)
{
if (!IsExpanded)
{
IsExpanded = true;
}
else
{
ParentTreeView.Selection.SelectNextFromKey();
}
}
e.Handled = true;
break;
case Key.Up:
ParentTreeView.Selection.SelectPreviousFromKey();
e.Handled = true;
break;
case Key.Down:
ParentTreeView.Selection.SelectNextFromKey();
e.Handled = true;
break;
case Key.Home:
ParentTreeView.Selection.SelectFirstFromKey();
e.Handled = true;
break;
case Key.End:
ParentTreeView.Selection.SelectLastFromKey();
e.Handled = true;
break;
case Key.PageUp:
ParentTreeView.Selection.SelectPageUpFromKey();
e.Handled = true;
break;
case Key.PageDown:
ParentTreeView.Selection.SelectPageDownFromKey();
e.Handled = true;
break;
case Key.A:
if (e.KeyboardDevice.Modifiers == ModifierKeys.Control)
{
ParentTreeView.Selection.SelectAllFromKey();
e.Handled = true;
}
break;
case Key.Add:
if (CanExpandOnInput && !IsExpanded)
{
IsExpanded = true;
}
e.Handled = true;
break;
case Key.Subtract:
if (CanExpandOnInput && IsExpanded)
{
IsExpanded = false;
}
e.Handled = true;
break;
case Key.F2:
if (ParentTreeView.AllowEditItems && ContentTemplateEdit != null && IsFocused && IsEditable)
{
IsEditing = true;
}
e.Handled = true;
break;
case Key.Escape:
StopEditing();
e.Handled = true;
break;
case Key.Return:
FocusHelper.Focus(this, true);
IsEditing = false;
e.Handled = true;
break;
case Key.Space:
ParentTreeView.Selection.SelectCurrentBySpace();
e.Handled = true;
break;
}
}
}