.net - 确定相对于目标的弹出位置

标签 .net wpf popup placement

将 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/

相关文章:

c# - 在 Asp.net 中导入 Excel 需要在服务器上安装 Microsoft office 吗?

c# - 非泛型类型 'System.Collections.IEnumerable' 不能与类型参数一起使用

c# - 您如何将外部库打包到您的 .Net 项目中?

c# - 多次显示同一模块

c# - 我如何尝试创建一个文件,并返回一个值来指示它是否已创建?

c# - VS 2010 Beta 1 无法识别 System.Printing.PrintTicket 类

wpf - 这种 TextBox 样式有什么问题?

java - 我如何在 Servlet 中打开一个弹出窗口,然后重定向一个页面

javascript - 如何关闭具有跨域 url 的身份验证弹出窗口?

r - 如何控制 R 中传单功能弹出窗口的弹出窗口宽度?