从后面的代码或XAML中的NotifyIcon控件中设置图像

时间:2011-04-22 18:18:28

标签: wpf wpf-controls notifyicon

我正在使用WindowsForms中的NotifyIcon,因为在WPF中我们没有这样的控件,但WinForms中的那个工作正常,我的问题是当图像在Project中时,只在NotifyIcon中将图像设置为图标。 / p>

我将图像放在项目中名为Images的文件夹中,图像文件调用'notification.ico'。

这是我的NotifyIcon:

System.Windows.Forms.NotifyIcon sysIcon = new System.Windows.Forms.NotifyIcon() 
{
    Icon = new System.Drawing.Icon(@"/Images/notification.ico"),
    ContextMenu = menu,
    Visible = true
};

我在这里做错了什么?

我可以在XAML中创建我的NotifyIcon而不是Code Behind吗?如果有可能,我该怎么做?

提前致谢!

1 个答案:

答案 0 :(得分:10)

System.Drawing.Icon不支持用于WPF资源的pack:// URI方案。你可以:

  • 将您的图标作为resx文件中的嵌入资源包含在内,并直接使用生成的属性:

    System.Windows.Forms.NotifyIcon sysIcon = new System.Windows.Forms.NotifyIcon() 
    {
        Icon = Properties.Resources.notification,
        ContextMenu = menu,
        Visible = true
    };
    
  • 或从URI手动加载:

    StreamResourceInfo sri = Application.GetResourceStream(new Uri("/Images/notification.ico"));
    System.Windows.Forms.NotifyIcon sysIcon = new System.Windows.Forms.NotifyIcon() 
    {
        Icon = new System.Drawing.Icon(sri.Stream),
        ContextMenu = menu,
        Visible = true
    };