上下文菜单位置

8
我有一个上下文菜单,可以通过按下键盘快捷键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"

但是并不起作用。
1个回答

15
您需要设置ContextMenuPlacementTarget属性:
if (element.ContextMenu != null )
{
    element.ContextMenu.PlacementTarget = element;
    element.ContextMenu.IsOpen = true;
}

如果在此之后,ContextMenu 仍无法正确放置,你可以使用 ContextMenu.HorizontalOffsetContextMenu.VerticalOffset 属性来设置位置。请查看 MSDN 上的ContextMenu.HorizontalOffset PropertyContextMenu.VerticalOffset Property 页面获取更多信息。


谢谢,它有效。我以为将定位放在XAML部分就足够了。 - marcel
我很高兴能够帮助您。如果这个答案对您解决问题有所帮助,请“打勾”选择它作为正确答案。 - Sheridan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接