限制/移动窗口边界中的上下文菜单(右键单击)

Ami*_*gar 7 c# windows wpf winapi contextmenu

每当您右键单击浏览器(或任何其他应用程序)的边缘时,上下文菜单将溢出窗口,但不会溢出屏幕.

我希望上下文菜单始终位于窗口边界,所以当我点击底边附近时,它应该显示顶部的菜单.假设窗口的尺寸总是大于上下文菜单.

这可能吗?如果没有,有任何解决方法吗?

PS我没有构建应用程序窗口,只是应用程序的查看器.

上下文菜单越界

Gor*_*rue -1

使用ContextMenu 的Placement和属性。PlacementRectangle

在下面的示例中,我将 Placement 属性设置为“Relative”,将 Rectangle 设置为 x,y 坐标 25, 25。然后,无论我单击何处,上下文菜单都会出现在相对于 Button 的 25、25 处。

<Button ContextMenuService.Placement="Relative" ContextMenuService.PlacementRectangle="25, 25, 0, 0">
    <Button.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Do this" />
            <MenuItem Header="Do that" />
        </ContextMenu>
    </Button.ContextMenu>
</Button>
Run Code Online (Sandbox Code Playgroud)

当然,您可以根据菜单的大小及其与边缘的接近程度,对这些属性使用哪些值进行更动态的计算。