如何确定Popup控件在绘制到屏幕后相对于其目标的位置(PlacementMode)?我注意到虽然我将弹出窗口的放置设置为底部,但当屏幕上剩余的空间很小时,它会选择反转放置。这一切都很好,只要有一种方法可以检索更新后的Placement。到目前为止,检查Placement似乎返回我设置的实际值,垂直和水平偏移都是0.0。
答案 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
但是您应该能够通过指定自定义位置来解决大多数布局问题。