上下文菜单位置

时间:2013-08-20 13:07:42

标签: c# wpf contextmenu

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

ContextMenu.IsOpen = true;

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

  1. 如果我只按菜单键,则菜单显示在屏幕中间
  2. 如果我手动调用菜单,它总是出现在左上角。
  3. 我的菜单就是这个:

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

    使用上面的xaml放置也可以使用。因此我将窗口设置为

    ContextMenuService.Placement="Center"
    

    但是没有用。

1 个答案:

答案 0 :(得分:9)

您需要设置PlacementTarget的{​​{1}}属性:

ContextMenu

如果在此之后if (element.ContextMenu != null ) { element.ContextMenu.PlacementTarget = element; element.ContextMenu.IsOpen = true; } 仍未正确放置,您可以使用ContextMenuContextMenu.HorizontalOffset属性设置展示位置。有关详细信息,请查看MSDN上的ContextMenu.HorizontalOffset PropertyContextMenu.VerticalOffset Property页面。