diff --git a/Perspex.Controls/IMenu.cs b/Perspex.Controls/IMenu.cs
new file mode 100644
index 0000000000..5943007856
--- /dev/null
+++ b/Perspex.Controls/IMenu.cs
@@ -0,0 +1,13 @@
+// -----------------------------------------------------------------------
+//
+// Copyright 2015 MIT Licence. See licence.md for more information.
+//
+// -----------------------------------------------------------------------
+
+namespace Perspex.Controls
+{
+ internal interface IMenu
+ {
+ void ChildPointerEnter(MenuItem item);
+ }
+}
diff --git a/Perspex.Controls/Menu.cs b/Perspex.Controls/Menu.cs
index 266cbb5b1b..79773ea7fd 100644
--- a/Perspex.Controls/Menu.cs
+++ b/Perspex.Controls/Menu.cs
@@ -4,11 +4,12 @@
//
// -----------------------------------------------------------------------
-using Perspex.Controls.Generators;
-
namespace Perspex.Controls
{
- public class Menu : ItemsControl
+ using System.Linq;
+ using Perspex.LogicalTree;
+
+ public class Menu : ItemsControl, IMenu
{
private static readonly ItemsPanelTemplate DefaultPanel =
new ItemsPanelTemplate(() => new StackPanel { Orientation = Orientation.Horizontal });
@@ -17,5 +18,18 @@ namespace Perspex.Controls
{
ItemsPanelProperty.OverrideDefaultValue(typeof(Menu), DefaultPanel);
}
+
+ void IMenu.ChildPointerEnter(MenuItem item)
+ {
+ var children = this.GetLogicalChildren().Cast