diff --git a/Perspex.Controls/Menu.cs b/Perspex.Controls/Menu.cs
new file mode 100644
index 0000000000..6fa9fbccbd
--- /dev/null
+++ b/Perspex.Controls/Menu.cs
@@ -0,0 +1,19 @@
+// -----------------------------------------------------------------------
+//
+// Copyright 2015 MIT Licence. See licence.md for more information.
+//
+// -----------------------------------------------------------------------
+
+namespace Perspex.Controls
+{
+ public class Menu : ItemsControl
+ {
+ private static readonly ItemsPanelTemplate DefaultPanel =
+ new ItemsPanelTemplate(() => new StackPanel { Orientation = Orientation.Horizontal });
+
+ static Menu()
+ {
+ ItemsPanelProperty.OverrideDefaultValue(typeof(Menu), DefaultPanel);
+ }
+ }
+}
diff --git a/Perspex.Controls/MenuItem.cs b/Perspex.Controls/MenuItem.cs
new file mode 100644
index 0000000000..2194444231
--- /dev/null
+++ b/Perspex.Controls/MenuItem.cs
@@ -0,0 +1,29 @@
+// -----------------------------------------------------------------------
+//
+// Copyright 2015 MIT Licence. See licence.md for more information.
+//
+// -----------------------------------------------------------------------
+
+namespace Perspex.Controls
+{
+ using Perspex.Controls.Primitives;
+ using Perspex.Input;
+
+ public class MenuItem : HeaderedItemsControl
+ {
+ public static readonly PerspexProperty IsSubMenuOpenProperty =
+ PerspexProperty.Register