diff --git a/samples/ControlCatalog/App.xaml b/samples/ControlCatalog/App.xaml
index 2f6d25c089..8facde71c1 100644
--- a/samples/ControlCatalog/App.xaml
+++ b/samples/ControlCatalog/App.xaml
@@ -2,9 +2,9 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="ControlCatalog.App">
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/ControlCatalog/MainWindow.xaml b/samples/ControlCatalog/MainWindow.xaml
index 882c7955d0..1b01fa56a8 100644
--- a/samples/ControlCatalog/MainWindow.xaml
+++ b/samples/ControlCatalog/MainWindow.xaml
@@ -7,7 +7,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:ControlCatalog.ViewModels"
xmlns:v="clr-namespace:ControlCatalog.Views"
- x:Class="ControlCatalog.MainWindow">
+ x:Class="ControlCatalog.MainWindow" NativeMenu.PrependApplicationMenu="True">
diff --git a/src/Avalonia.Native/AvaloniaNativeMenuExporter.cs b/src/Avalonia.Native/AvaloniaNativeMenuExporter.cs
index 16f2cc32b7..bc626add91 100644
--- a/src/Avalonia.Native/AvaloniaNativeMenuExporter.cs
+++ b/src/Avalonia.Native/AvaloniaNativeMenuExporter.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
+using System.Linq;
using System.Text;
using Avalonia.Controls;
using Avalonia.Controls.Platform;
@@ -47,6 +48,7 @@ namespace Avalonia.Native
private bool _resetQueued;
private bool _exported = false;
private IAvnWindow _nativeWindow;
+ private bool _prependAppMenu;
private List _menuItems = new List();
public AvaloniaNativeMenuExporter(IAvnWindow nativeWindow, IAvaloniaNativeFactory factory)
@@ -74,7 +76,7 @@ namespace Avalonia.Native
public void SetPrependApplicationMenu(bool prepend)
{
- throw new NotImplementedException();
+ _prependAppMenu = prepend;
}
private void OnItemPropertyChanged(object sender, AvaloniaPropertyChangedEventArgs e)
@@ -235,6 +237,17 @@ namespace Avalonia.Native
private void SetMenu(IAvnWindow avnWindow, ICollection menuItems)
{
+ if (_prependAppMenu)
+ {
+ var menu = NativeMenu.GetMenu(Application.Current);
+
+ var items = menuItems.ToList();
+
+ items.InsertRange(0, menu.Items);
+
+ menuItems = items;
+ }
+
var appMenu = avnWindow.ObtainMainMenu();
if(appMenu is null)