上下文菜单位置

mar*_*cel 5 c# wpf contextmenu

我有一个上下文菜单,通过按热键ctrl +菜单手动显示.因此我使用此功能:

ContextMenu.IsOpen = true;
Run Code Online (Sandbox Code Playgroud)

我在主窗口中调用它.但它有一些奇怪的效果.

  1. 如果我只按菜单键,菜单就会出现在屏幕中间
  2. 如果我手动调用菜单,它总是出现在左上角.

我的菜单就是这个:

<Window.ContextMenu>
    <ContextMenu Placement="Center">
        <MenuItem IsCheckable="False" Name="item2" Click="MenuItem_Click" Header="{DynamicResource countDownNotificationOn}"/>
    </ContextMenu>
</Window.ContextMenu>
Run Code Online (Sandbox Code Playgroud)

使用上面的xaml放置也不起作用.因此我将窗口设置为

ContextMenuService.Placement="Center"
Run Code Online (Sandbox Code Playgroud)

但是不起作用.

She*_*dan 9

您需要设置以下PlacementTarget属性ContextMenu:

if (element.ContextMenu != null )
{
    element.ContextMenu.PlacementTarget = element;
    element.ContextMenu.IsOpen = true;
}
Run Code Online (Sandbox Code Playgroud)

如果在此之后ContextMenu仍未正确放置,则可以使用ContextMenu.HorizontalOffsetContextMenu.VerticalOffset属性设置放置.有关详细信息,请查看MSDN 上的ContextMenu.Horizo​​ntalOffset属性ContextMenu.VerticalOffset属性页.