From d043e4b67a0413c3876446d10ce91ca10a194a49 Mon Sep 17 00:00:00 2001 From: danwalmsley Date: Thu, 4 Feb 2016 18:18:24 +0000 Subject: [PATCH] fixed popup, and context menu. --- src/Perspex.Controls/ContextMenu.cs | 5 +++-- src/Perspex.Controls/Primitives/Popup.cs | 9 ++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Perspex.Controls/ContextMenu.cs b/src/Perspex.Controls/ContextMenu.cs index b59df2fe7d..85acddfe3a 100644 --- a/src/Perspex.Controls/ContextMenu.cs +++ b/src/Perspex.Controls/ContextMenu.cs @@ -89,12 +89,13 @@ _popup = new Popup() { PlacementTarget = control, - Child = new ContentControl(), + StaysOpen = false }; } ((ISetLogicalParent)_popup).SetParent(control); - + _popup.Child = control.ContextMenu; + _popup.Open(); control.ContextMenu._isOpen = true; diff --git a/src/Perspex.Controls/Primitives/Popup.cs b/src/Perspex.Controls/Primitives/Popup.cs index 059e782584..9a15a658c2 100644 --- a/src/Perspex.Controls/Primitives/Popup.cs +++ b/src/Perspex.Controls/Primitives/Popup.cs @@ -172,13 +172,16 @@ namespace Perspex.Controls.Primitives _popupRoot.Position = GetPosition(); - if (_topLevel == null) + if (_topLevel == null && PlacementTarget != null) { _topLevel = PlacementTarget.GetSelfAndLogicalAncestors().First(x => x is TopLevel) as TopLevel; } - _topLevel.Deactivated += TopLevelDeactivated; - _topLevel.AddHandler(PointerPressedEvent, PointerPressedOutside, RoutingStrategies.Tunnel); + if (_topLevel != null) + { + _topLevel.Deactivated += TopLevelDeactivated; + _topLevel.AddHandler(PointerPressedEvent, PointerPressedOutside, RoutingStrategies.Tunnel); + } PopupRootCreated?.Invoke(this, EventArgs.Empty);