2013-08-20 94 views
5

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

ContextMenu.IsOpen = true; 

我在我的主窗口中调用了这个函数。但它有一些奇怪的影响。

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

我的菜单是这个:使用

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

以上这么想的工作XAML安置无论是。因此,我设置窗口为

ContextMenuService.Placement="Center" 

但是不起作用。

回答

7

您需要设置ContextMenuPlacementTarget属性:

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

如果在这之后,ContextMenu仍然没有正确放置,你可以设置使用ContextMenu.HorizontalOffsetContextMenu.VerticalOffset性的位置。请参阅MSDN上的ContextMenu.HorizontalOffset PropertyContextMenu.VerticalOffset Property页面以获取更多信息。

+0

谢谢,它的工作原理。我认为只要将展示位置放入xaml部分就足够了。 – marcel

+0

我很高兴能帮上忙。如果它能帮助你解决你的问题,请把它作为正确的答案。 – Sheridan