public override bool ConsumeKey(Key key) { if ((Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift)) && (new[] { Key.Right, Key.Left, Key.Up, Key.Down, Key.Home, Key.End }).Contains(key)) { if (!IsSelecting) { IsSelecting = true; ((RowContainer)ActiveChild).StartSelection(); } ActiveChild.Select(key); AdjustCarets(); return(true); } Key[] handledKeys = { Key.Left, Key.Right, Key.Delete, Key.Up, Key.Down, Key.Enter, Key.Escape, Key.Back, Key.Home, Key.End }; bool result = false; if (handledKeys.Contains(key)) { result = true; if (IsSelecting && (new[] { Key.Delete, Key.Enter, Key.Back }).Contains(key)) { ActiveChild.RemoveSelection(true); } else { ActiveChild.ConsumeKey(key); } CalculateSize(); AdjustCarets(); DeSelect(); } return(result); }