Forráskód Böngészése

fixed popup, and context menu.

danwalmsley 9 éve
szülő
commit
d043e4b67a

+ 3 - 2
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;

+ 6 - 3
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);