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)