Browse Source

Correctly close sibling sub-menus.

pull/58/head
Steven Kirk 11 years ago
parent
commit
d3ebd1fbe3
  1. 16
      Perspex.Controls/MenuItem.cs

16
Perspex.Controls/MenuItem.cs

@ -12,9 +12,7 @@ namespace Perspex.Controls
using Perspex.Controls.Primitives; using Perspex.Controls.Primitives;
using Perspex.Input; using Perspex.Input;
using Perspex.LogicalTree; using Perspex.LogicalTree;
using Perspex.Collections; using Perspex.VisualTree;
using Perspex.Rendering;
using Perspex.Controls.Templates;
public class MenuItem : HeaderedItemsControl, IMenu public class MenuItem : HeaderedItemsControl, IMenu
{ {
@ -98,11 +96,13 @@ namespace Perspex.Controls
} }
else if (open) else if (open)
{ {
// TODO: This is broken, meaning that a previous submenu isn't closed when a new var root = this.GetVisualAncestors().OfType<PopupRoot>().FirstOrDefault();
// one opens. This is because each menu item is in a separate visual tree to its
// parent due to its being contained in a Popup and parenting/templating is if (root != null)
// broken across visual trees. {
this.GetLogicalParent<IMenu>()?.ChildSubMenuOpened(this); var parentItem = ((ILogical)root).GetLogicalParent<Popup>().TemplatedParent;
(parentItem as IMenu)?.ChildSubMenuOpened(this);
}
} }
} }

Loading…
Cancel
Save