Context Menu location
c#, contextmenu, wpf
Solution
You need to set the `PlacementTarget` property of the `ContextMenu`:
if (element.ContextMenu != null )
{
element.ContextMenu.PlacementTarget = element;
element.ContextMenu.IsOpen = true;
}
If after this, the `ContextMenu` is still not placed correctly, you can set the placement using the `ContextMenu.HorizontalOffset` and `ContextMenu.VerticalOffset` properties. Take a look at the ContextMenu.HorizontalOffset Property and ContextMenu.VerticalOffset Property pages at MSDN for more information.
Problem
I have a context menu to show up manually by pressing the hotkey ctrl+menu. Therefore i use this function: ``` ContextMenu.IsOpen = true; ``` I call this in my main window. But it has some odd effects. - If I only press the menu-key, the menu alwasy appears in the middle of the screen - If I manually call the menu, it always appears in the top left corner. my menu is this one: ``` <Window.ContextMenu> <ContextMenu Placement="Center"> <MenuItem IsCheckable="False" Name="item2" Click="MenuItem_Click" Header="{DynamicResource countDownNotificationOn}"/> </ContextMenu> </Window.ContextMenu> ``` using the xaml placement above dosen't work either. Therefore I set the window to ``` ContextMenuService.Placement="Center" ``` But doesn't work.