System.Windows.Controls.ComboBox.OnKeyDown C# (CSharp) Method

OnKeyDown() protected method

protected OnKeyDown ( KeyEventArgs e ) : void
e KeyEventArgs
return void
		protected override void OnKeyDown (KeyEventArgs e)
		{
			base.OnKeyDown (e);
			if (!e.Handled) {
				e.Handled = true;
				switch (e.Key) {
				case Key.Escape:
					IsDropDownOpen = false;
					break;
					
				case Key.Enter:
				case Key.Space:
					if (IsDropDownOpen && FocusedIndex != SelectedIndex) {
						SelectedIndex = FocusedIndex;
						IsDropDownOpen = false;
					} else {
						IsDropDownOpen = true;
					}
					break;
					
				case Key.Down:
					if (IsDropDownOpen) {
						if (FocusedIndex < Items.Count - 1) {
							FocusedIndex ++;
							((Control) ItemContainerGenerator.ContainerFromIndex (FocusedIndex)).Focus ();
						}
					} else {
						SelectedIndex = Math.Min (SelectedIndex + 1, Items.Count - 1);
					}
					break;
					
				case Key.Up:
					if (IsDropDownOpen) {
						if (FocusedIndex > 0) {
							FocusedIndex --;
							((Control) ItemContainerGenerator.ContainerFromIndex (FocusedIndex)).Focus ();
						}
					} else if (SelectedIndex != -1) {
						SelectedIndex = Math.Max (SelectedIndex - 1, 0);
					}
					break;
					
				default:
					e.Handled = false;
					break;
				}
			} else {
				Console.WriteLine ("Already handled");
			}
		}