WPF ContextMenu位置不正确

时间:2015-08-07 20:49:45

标签: c# wpf contextmenu offset

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

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

contextMenu.Placement = PlacementMode.AbsolutePoint;
contextMenu.HorizontalOffset = args.X;
contextMenu.VerticalOffset = args.Y;
contextMenu.IsOpen = true;

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

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

enter image description here

系统托盘上其他图标的上下文菜单显示鼠标的确切位置。

我搜索了ContextMenu的所有可用属性,似乎没有什么能解决它。 我错过了什么吗? 我总是可以手动调整大约7个像素,但如果有更好的方法,我宁愿做任何可能的事情。

1 个答案:

答案 0 :(得分:1)

我不确定为什么它与AbsolutePoint一样。但是如果你想将上下文菜单放在鼠标指针的尖端,你试过吗

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

MSDN(https://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.placementmode%28v=vs.110%29.aspx)解释说MousePoint会将上下文菜单“...相对于鼠标光标的尖端和偏移...”。