.net – 确定相对于目标的Popup放置

在绘制到屏幕后,如何确定Popup控件相对于其目标的位置(PlacementMode)?我注意到虽然我将弹出窗口的放置设置为底部,但当屏幕上剩余的空间很小时,它会选择反转放置.这一切都很好,只要有一种方法可以检索更新后的Placement.到目前为止,检查Placement似乎返回我设置的实际值,垂直和水平偏移都是0.0. 最佳答案 当您设置PlacementMode时,您建议您希望弹出窗口相对于PlacementTarget,PlacementRectangle或默认情况下它的父级显示.为了安全起见,弹出窗口不能在屏幕范围之外绘制.

弹出式展示位置参考:

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

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

点赞