确定相对于目标的弹出窗口位置

时间:2012-02-07 20:17:12

标签: .net wpf popup placement

如何确定Popup控件在绘制到屏幕后相对于其目标的位置(PlacementMode)?我注意到虽然我将弹出窗口的放置设置为底部,但当屏幕上剩余的空间很小时,它会选择反转放置。这一切都很好,只要有一种方法可以检索更新后的Placement。到目前为止,检查Placement似乎返回我设置的实际值,垂直和水平偏移都是0.0。

1 个答案:

答案 0 :(得分:2)

当您设置PlacementMode时,您建议您希望弹出窗口相对于PlacementTarget,PlacementRectangle或默认情况下它的父级显示在哪里。为了安全起见,不能在屏幕边界之外绘制Popup。

弹出式展示位置参考:

http://msdn.microsoft.com/en-us/library/bb613596.aspx

如果您想更好地控制Popup在遇到屏幕边缘时呈现的方式,可以指定自定义弹出位置。

如下所述:

http://msdn.microsoft.com/en-us/library/ms743607.aspx

这允许您指定主偏移和对齐,如果第一个不可用,则指定辅助偏移和对齐。当发生冲突时,它会选择显示弹出窗口最大部分的位置。

如果你真的需要Popup的坐标,这篇文章有一个win32技巧,你可以用它来获得弹出窗口的确切位置。

WPF Popup Control - Find X, Y Coordinates

但是您应该能够通过指定自定义位置来解决大多数布局问题。