我在MenuItem的控件模板中使用Popup。
但是,我事先并不知道菜单项中有多少项。因此,弹出窗口可能不适合屏幕,某些项目可能无法访问。
我的解决方案是将MaxSize设置为500,并将ItemsPresenter包装在ScrollViewer中。
但是,这并没有考虑到屏幕的大小。
有没有办法指定弹出窗口应该尽可能大而不超出屏幕边界?
显然,WPF足够聪明,可以设置弹出窗口的方向(向上/向下,向右/向左),使其趋于居中。例如,如果弹出窗口位于屏幕的底部,它将弹出弹出位置上方,而不是低于弹出位置。但是我没有看到任何关于最大尺寸的信息。
答案 0 :(得分:1)
您可以使用SystemParameters.PrimaryScreenHeight
和Popup
左上角的组合来计算您有多少空间,并将其设置为{{1}的MaxHeight
}}的内容。
答案 1 :(得分:0)
我相信你能做到的唯一方法是连接一个事件,可能是窗口或弹出窗口上的LayoutUpdated,并使用某种百分比计算以编程方式设置宽度。 MaxWidth on FrameworkElements仅采用离散值。