【发布时间】:2015-03-30 02:29:33
【问题描述】:
我正在使用 wpf 通知图标 (http://www.hardcodet.net/wpf-notifyicon)
当我的笔记本电脑以 100% dpi 缩放时,上下文菜单的左侧以托盘图标为中心,正如预期的那样。
当笔记本电脑不是 100% 时,上下文菜单被推到最右边。
在高分辨率笔记本电脑显示器上,100% 缩放不是默认设置。
无论我的托盘图标在哪里,也就是说,无论离时钟有多远,菜单总是会随着时钟弹出,尽可能在屏幕的右下角,同时保持可见。
注意:我正在测试默认安装的 Windows 8.1。此外,我正在使用的 NotifyIcon 是通常推荐给任何尝试在 WPF 中使用托盘功能的人的图标。
重现:hardcodet 提供的无窗口示例中存在问题。我正在使用没有窗口的 wpf NotifyIcon,并且可以在代码或 xaml 中轻松重现。事实上,我无法停止复制它。当 dpi 缩放打开时会发生这种情况,即 1080p 显示器实际上显示的分辨率较低时,Windows 会这样做以阻止文本太小而无法阅读的应用程序。
关于如何使上下文菜单出现在预期位置而不考虑 dpi 的任何想法?
kennyzx 建议的屏幕截图:
良好的行为。红色背景上的 m (MEGAsync) 刚刚被右键单击
不良行为。绿色的勾号,我的通知图标,刚刚被右键单击,菜单随时出现
!good behaviour. the m on red background (MEGAsync) has just been right-clicked
还有一些代码:
var n = new TaskbarIcon();
n.Icon=new System.Drawing.Icon(@"C:\window - 64 - tick.ico");
n.ContextMenu = new System.Windows.Controls.ContextMenu();
n.ContextMenu.Items.Add(new System.Windows.Controls.MenuItem {Header="E_xit" });
【问题讨论】:
-
这最好用截图来说明。
标签: wpf dpi notifyicon