关于C#:WPF ContextMenu位置不正确

WPF ContextMenu incorrect position

我一直试图将上下文菜单添加到通知图标(系统任务栏图标)。
这是我自己的自定义WPFpackage器,用于环绕本机Shell_NotifyIcon函数。

我一直在使用以下代码显示上下文菜单:

1
2
3
4
contextMenu.Placement = PlacementMode.AbsolutePoint;
contextMenu.HorizontalOffset = args.X;
contextMenu.VerticalOffset = args.Y;
contextMenu.IsOpen = true;

args.Xargs.Y是单击通知图标时鼠标的绝对屏幕坐标(我已经确认它包含正确的鼠标位置)。

由于某种原因,上下文菜单在鼠标位置的左上方大约显示5-7个像素:

enter


我不确定为什么它在AbsolutePoint中会表现出这种方式。但是,如果要将上下文菜单放在鼠标指针的尖端,是否尝试过

1
2
3
contextMenu.Placement = PlacementMode.MousePoint;
contextMenu.HorizontalOffset = 0;
contextMenu.VerticalOffset = 0;

MSDN(https://msdn.microsoft.com/zh-cn/library/system.windows.controls.primitives.placementmode(v=vs.110).aspx)解释了MousePoint将定位上下文菜单" ...相对于鼠标光标的尖端并偏移... "。