浏览代码

walk tree to find window.

Dan Walmsley 7 年之前
父节点
当前提交
fd8e1ecba7
共有 1 个文件被更改,包括 4 次插入2 次删除
  1. 4 2
      src/Avalonia.Controls/Primitives/PopupRoot.cs

+ 4 - 2
src/Avalonia.Controls/Primitives/PopupRoot.cs

@@ -7,6 +7,7 @@ using Avalonia.Controls.Platform;
 using Avalonia.Controls.Presenters;
 using Avalonia.Interactivity;
 using Avalonia.Layout;
+using Avalonia.LogicalTree;
 using Avalonia.Media;
 using Avalonia.Platform;
 using Avalonia.Styling;
@@ -82,8 +83,9 @@ namespace Avalonia.Controls.Primitives
         /// </summary>
         public void SnapInsideScreenEdges()
         {
-            var mainWindow = Window.OpenWindows.First();
-            var screen = mainWindow.Screens.ScreenFromPoint(Position);
+            var window = this.GetSelfAndLogicalAncestors().OfType<Window>().First();
+            
+            var screen = window.Screens.ScreenFromPoint(Position);
 
             var screenX = Position.X + Bounds.Width - screen.Bounds.X;
             var screenY = Position.Y + Bounds.Height - screen.Bounds.Y;