fix: fix menu root find in popup.
This commit is contained in:
@@ -82,7 +82,13 @@ public class NavigationMenuItem: HeaderedSelectingItemsControl
|
|||||||
protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
|
protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
|
||||||
{
|
{
|
||||||
base.OnAttachedToVisualTree(e);
|
base.OnAttachedToVisualTree(e);
|
||||||
_rootMenu = this.FindAncestorOfType<NavigationMenu>();
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
||||||
|
{
|
||||||
|
base.OnApplyTemplate(e);
|
||||||
|
GetRootMenu();
|
||||||
if (ItemTemplate == null && _rootMenu?.ItemTemplate != null)
|
if (ItemTemplate == null && _rootMenu?.ItemTemplate != null)
|
||||||
{
|
{
|
||||||
SetCurrentValue(ItemTemplateProperty, _rootMenu.ItemTemplate);
|
SetCurrentValue(ItemTemplateProperty, _rootMenu.ItemTemplate);
|
||||||
@@ -98,6 +104,20 @@ public class NavigationMenuItem: HeaderedSelectingItemsControl
|
|||||||
Level = CalculateDistanceFromLogicalParent<NavigationMenu>(this) - 1;
|
Level = CalculateDistanceFromLogicalParent<NavigationMenu>(this) - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void GetRootMenu()
|
||||||
|
{
|
||||||
|
_rootMenu = this.FindAncestorOfType<NavigationMenu>();
|
||||||
|
if (_rootMenu is null)
|
||||||
|
{
|
||||||
|
var popupRoot = TopLevel.GetTopLevel(this) as PopupRoot;
|
||||||
|
if (popupRoot?.Parent is Popup popup)
|
||||||
|
{
|
||||||
|
Control? c = popup.PlacementTarget;
|
||||||
|
_rootMenu = c.FindAncestorOfType<NavigationMenu>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected override void OnPointerPressed(PointerPressedEventArgs e)
|
protected override void OnPointerPressed(PointerPressedEventArgs e)
|
||||||
{
|
{
|
||||||
base.OnPointerPressed(e);
|
base.OnPointerPressed(e);
|
||||||
|
|||||||
Reference in New Issue
Block a user