如何将弹出窗口的大小限制为屏幕

时间:2010-10-27 17:32:40

标签: wpf

我在MenuItem的控件模板中使用Popup。

但是,我事先并不知道菜单项中有多少项。因此,弹出窗口可能不适合屏幕,某些项目可能无法访问。

我的解决方案是将MaxSize设置为500,并将ItemsPresenter包装在ScrollViewer中。

但是,这并没有考虑到屏幕的大小。

有没有办法指定弹出窗口应该尽可能大而不超出屏幕边界?

显然,WPF足够聪明,可以设置弹出窗口的方向(向上/向下,向右/向左),使其趋于居中。例如,如果弹出窗口位于屏幕的底部,它将弹出弹出位置上方,而不是低于弹出位置。但是我没有看到任何关于最大尺寸的信息。

2 个答案:

答案 0 :(得分:1)

您可以使用SystemParameters.PrimaryScreenHeightPopup左上角的组合来计算您有多少空间,并将其设置为{{1}的MaxHeight }}的内容。

答案 1 :(得分:0)

我相信你能做到的唯一方法是连接一个事件,可能是窗口或弹出窗口上的LayoutUpdated,并使用某种百分比计算以编程方式设置宽度。 MaxWidth on FrameworkElements仅采用离散值。