将 Popup 控件绘制到屏幕后,如何确定它相对于其目标的位置 (PlacementMode)?我注意到虽然我将弹出窗口的位置设置为底部,但当屏幕上剩下的空间很小时,它会选择反转位置。这一切都很好,只要有一种方法可以检索更新的 Placement。到目前为止,检查 Placement 似乎返回了我设置的实际值,并且垂直和水平偏移都是 0.0。
最佳答案
当您设置 PlacementMode 时,您是在建议您希望弹出窗口相对于 PlacementTarget、PlacementRectangle 或默认情况下它的父级出现的位置。为了安全起见,不能在屏幕边界之外绘制弹出窗口。
弹窗放置引用:
http://msdn.microsoft.com/en-us/library/bb613596.aspx
如果您想更好地控制遇到屏幕边缘时弹出窗口的呈现方式,可以指定自定义弹出窗口位置。
如此处所述:
http://msdn.microsoft.com/en-us/library/ms743607.aspx
这使您可以指定主要偏移和对齐方式,如果第一个不可用,则可以指定次要偏移和对齐方式。当发生冲突时,它会选择显示弹出窗口最大部分的位置。
如果您真的需要弹出窗口的坐标,这篇文章有一个 win32 技巧,您可以使用它来获取弹出窗口的确切位置。
WPF Popup Control - Find X, Y Coordinates
但是您应该能够通过指定自定义位置来解决大多数布局问题。
关于.net - 确定相对于目标的弹出位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9183222/