diff --git a/src/Avalonia.Controls/MenuItem.cs b/src/Avalonia.Controls/MenuItem.cs index 5e7c83fcbd..11c42f2ef3 100644 --- a/src/Avalonia.Controls/MenuItem.cs +++ b/src/Avalonia.Controls/MenuItem.cs @@ -304,7 +304,7 @@ namespace Avalonia.Controls bool IMenuItem.IsPointerOverSubMenu => _popup?.IsPointerOverPopup ?? false; /// - IMenuElement? IMenuItem.Parent => this.FindLogicalAncestorOfType(); + IMenuElement? IMenuItem.Parent => Parent as IMenuElement; protected override bool IsEnabledCore => base.IsEnabledCore && _commandCanExecute; diff --git a/src/Windows/Avalonia.Win32/Win32NativeToManagedMenuExporter.cs b/src/Windows/Avalonia.Win32/Win32NativeToManagedMenuExporter.cs index fa6f9927b5..da8357a6f1 100644 --- a/src/Windows/Avalonia.Win32/Win32NativeToManagedMenuExporter.cs +++ b/src/Windows/Avalonia.Win32/Win32NativeToManagedMenuExporter.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using Avalonia.Collections; using Avalonia.Controls; using Avalonia.Controls.Platform; @@ -15,13 +16,15 @@ namespace Avalonia.Win32 _nativeMenu = nativeMenu; } - private IEnumerable Populate(NativeMenu nativeMenu) + private AvaloniaList Populate(NativeMenu nativeMenu) { + var result = new AvaloniaList(); + foreach (var menuItem in nativeMenu.Items) { if (menuItem is NativeMenuItemSeparator) { - yield return new MenuItem { Header = "-" }; + result.Add(new MenuItem { Header = "-" }); } else if (menuItem is NativeMenuItem item) { @@ -36,12 +39,14 @@ namespace Avalonia.Win32 newItem.Click += (_, __) => bridge.RaiseClicked(); } - yield return newItem; + result.Add(newItem); } } + + return result; } - public IEnumerable? GetMenu() + public AvaloniaList? GetMenu() { if (_nativeMenu != null) {