C# WPF上下文菜单位置不正确

C# WPF上下文菜单位置不正确,c#,wpf,contextmenu,offset,C#,Wpf,Contextmenu,Offset,我一直在尝试向通知图标(系统托盘图标)添加上下文菜单。 这是针对我自己的自定义WPF包装,它围绕本机Shell_NotifyIcon函数 我一直在使用以下代码显示上下文菜单: contextMenu.Placement = PlacementMode.AbsolutePoint; contextMenu.HorizontalOffset = args.X; contextMenu.VerticalOffset = args.Y; contextMenu.IsOpen = true; args.

我一直在尝试向通知图标(系统托盘图标)添加上下文菜单。 这是针对我自己的自定义WPF包装,它围绕本机Shell_NotifyIcon函数

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

contextMenu.Placement = PlacementMode.AbsolutePoint;
contextMenu.HorizontalOffset = args.X;
contextMenu.VerticalOffset = args.Y;
contextMenu.IsOpen = true;
args.X
args.Y
是单击通知图标时鼠标的绝对屏幕坐标(我已验证它包含正确的鼠标位置)

出于某种原因,关联菜单在鼠标位置的左侧向上显示约5-7像素:

系统托盘上其他图标的上下文菜单将精确显示鼠标所在的位置

我搜索了ContextMenu的所有可用属性,似乎没有任何东西可以修复它。 我错过什么了吗?
我总是可以手动调整7个像素左右,但如果有更好的方法,我宁愿采用这种方法。

我不知道为什么绝对点会这样。但是如果你想把上下文菜单放在鼠标指针的顶端,你试过了吗

contextMenu.Placement = PlacementMode.MousePoint;
contextMenu.HorizontalOffset = 0;
contextMenu.VerticalOffset = 0;

MSDN()解释说,鼠标点将定位上下文菜单“…相对于鼠标光标的尖端并在偏移处…”。

我的第一个猜测是上下文菜单上有一个默认边距。您是否已尝试将边距显式设置为0?是的,我已尝试将边距设置为0。没有区别(鼠标点显示鼠标点击位置的上下文菜单,但我发现如果你点击并立即移动鼠标,上下文菜单会出现在鼠标的新位置。有人知道如何使它出现在点击位置吗?