7

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

ContextMenu.IsOpen = true;

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

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

我的菜单是这个:

<Window.ContextMenu>
    <ContextMenu Placement="Center">
        <MenuItem IsCheckable="False" Name="item2" Click="MenuItem_Click" Header="{DynamicResource countDownNotificationOn}"/>
    </ContextMenu>
</Window.ContextMenu>

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

ContextMenuService.Placement="Center"

但不起作用。

4

1 回答 1

14

您需要设置的PlacementTarget属性ContextMenu

if (element.ContextMenu != null )
{
    element.ContextMenu.PlacementTarget = element;
    element.ContextMenu.IsOpen = true;
}

如果在此之后,ContextMenu仍然没有正确放置,您可以使用ContextMenu.HorizontalOffsetContextMenu.VerticalOffset属性设置放置。查看 MSDN 上的ContextMenu.Horizo​​ntalOffset 属性ContextMenu.VerticalOffset 属性页面以获取更多信息。

于 2013-08-20T13:18:03.750 回答