diff --git a/Perspex.Controls/Menu.cs b/Perspex.Controls/Menu.cs index f831a70f3e..0a54020d90 100644 --- a/Perspex.Controls/Menu.cs +++ b/Perspex.Controls/Menu.cs @@ -129,6 +129,7 @@ namespace Perspex.Controls if (this.IsOpen && e.Key == Key.Escape) { this.CloseMenu(); + e.Handled = true; } } diff --git a/Perspex.Controls/MenuItem.cs b/Perspex.Controls/MenuItem.cs index 069ca74cbe..f9d3442900 100644 --- a/Perspex.Controls/MenuItem.cs +++ b/Perspex.Controls/MenuItem.cs @@ -207,9 +207,26 @@ namespace Perspex.Controls { base.OnKeyDown(e); - if (this.IsTopLevel && e.Key == Key.Down && this.HasSubMenu) + switch (e.Key) { - this.IsSubMenuOpen = true; + case Key.Down: + if (this.IsTopLevel && this.HasSubMenu) + { + this.IsSubMenuOpen = true; + this.SelectedIndex = 0; + e.Handled = true; + } + + break; + + case Key.Escape: + if (this.IsSubMenuOpen) + { + this.IsSubMenuOpen = false; + e.Handled = true; + } + + break; } } @@ -300,7 +317,6 @@ namespace Perspex.Controls if (popup != null) { popup.PopupRootCreated += this.PopupRootCreated; - popup.Opened += this.PopupOpened; } } @@ -338,11 +354,6 @@ namespace Perspex.Controls } } - private void PopupOpened(object sender, EventArgs e) - { - this.SelectedIndex = 0; - } - /// /// Called when the MenuItem's popup root is opened. ///