diff --git a/src/Ursa/Controls/Navigation/NavigationMenuItem.cs b/src/Ursa/Controls/Navigation/NavigationMenuItem.cs index 351c2c7..11067d1 100644 --- a/src/Ursa/Controls/Navigation/NavigationMenuItem.cs +++ b/src/Ursa/Controls/Navigation/NavigationMenuItem.cs @@ -82,7 +82,13 @@ public class NavigationMenuItem: HeaderedSelectingItemsControl protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e) { base.OnAttachedToVisualTree(e); - _rootMenu = this.FindAncestorOfType(); + + } + + protected override void OnApplyTemplate(TemplateAppliedEventArgs e) + { + base.OnApplyTemplate(e); + GetRootMenu(); if (ItemTemplate == null && _rootMenu?.ItemTemplate != null) { SetCurrentValue(ItemTemplateProperty, _rootMenu.ItemTemplate); @@ -98,6 +104,20 @@ public class NavigationMenuItem: HeaderedSelectingItemsControl Level = CalculateDistanceFromLogicalParent(this) - 1; } + private void GetRootMenu() + { + _rootMenu = this.FindAncestorOfType(); + if (_rootMenu is null) + { + var popupRoot = TopLevel.GetTopLevel(this) as PopupRoot; + if (popupRoot?.Parent is Popup popup) + { + Control? c = popup.PlacementTarget; + _rootMenu = c.FindAncestorOfType(); + } + } + } + protected override void OnPointerPressed(PointerPressedEventArgs e) { base.OnPointerPressed(e);