2013-08-20 140 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