diff --git a/Perspex.Application/Application.cs b/Perspex.Application/Application.cs
index 2639a17455..681f4abb64 100644
--- a/Perspex.Application/Application.cs
+++ b/Perspex.Application/Application.cs
@@ -42,6 +42,8 @@ namespace Perspex
///
private Styler styler = new Styler();
+ private ICloseable mainWindow;
+
///
/// Initializes a new instance of the class.
///
diff --git a/Perspex.Controls/IMenu.cs b/Perspex.Controls/IMenu.cs
index 47fde58012..5ccc53902b 100644
--- a/Perspex.Controls/IMenu.cs
+++ b/Perspex.Controls/IMenu.cs
@@ -11,5 +11,7 @@ namespace Perspex.Controls
void ChildPointerEnter(MenuItem item);
void ChildSubMenuOpened(MenuItem item);
+
+ void CloseMenu();
}
}
diff --git a/Perspex.Controls/Menu.cs b/Perspex.Controls/Menu.cs
index a040598f15..ca0538640d 100644
--- a/Perspex.Controls/Menu.cs
+++ b/Perspex.Controls/Menu.cs
@@ -46,6 +46,14 @@ namespace Perspex.Controls
}
}
+ void IMenu.CloseMenu()
+ {
+ foreach (MenuItem i in this.GetLogicalChildren())
+ {
+ i.IsSubMenuOpen = false;
+ }
+ }
+
protected override void OnAttachedToVisualTree(IRenderRoot root)
{
base.OnAttachedToVisualTree(root);
diff --git a/Perspex.Controls/MenuItem.cs b/Perspex.Controls/MenuItem.cs
index fb67c40d68..a56f535f30 100644
--- a/Perspex.Controls/MenuItem.cs
+++ b/Perspex.Controls/MenuItem.cs
@@ -13,6 +13,7 @@ namespace Perspex.Controls
using Perspex.Input;
using Perspex.LogicalTree;
using Perspex.VisualTree;
+ using Perspex.Interactivity;
public class MenuItem : HeaderedItemsControl, IMenu
{
@@ -28,11 +29,21 @@ namespace Perspex.Controls
public static readonly PerspexProperty IsSubMenuOpenProperty =
PerspexProperty.Register