Accessing resources from code for setting NotifyIcon.Icon

假装没事ソ 提交于 2019-12-04 05:19:38

You have to pass resourceName as a parameter to the FindResource method, not the path for the Resource. Sample code would look like:

var icon = (Icon) Application.Current.FindResource("myImage")

Please note in the above sample code "myImage" is the resource name.

Refer to Application.FindResource Method on MSDN.

You say, Application.Current.Resources.Count is Zero, that means you do not have any Resource defined in your App.xaml file.

You can add resources to App.xaml like this:

<Application.Resources>
     <Image x:Key="myImage" Source="img.png" />
</Application.Resources>

It appears that your icon is an embedded resource. FindResource cannot work with embedded resources. Set BuildAction of your icon to Resource.

Refer to this MSDN page for more reading on WPF Resources.

UPDATE

Code for accessing Embedded Resources

Assembly.GetExecutingAssembly().GetManifestResourceStream("myImg.png");

However, if you had added this image to the Resources.Resx and you should simply be able to use Resources.ResourceName.

UPDATE 2

Adding resources to App.xaml or any ResourceDictionary is better, so that you can use them as Static/Dynamic resources via StaticResource or DynamicResource markup extensions.

If you do not want to add it to App.xaml resources and still want to access it, one option as I mentioned above is to add it to the Resources.Resx and use Resources.ResourceName to refer the icon/image

Another way is to create System.Drawing.Icon by yourself, sample code:

new System.Drawing.Icon(Application.GetResourceStream(new Uri("/Resources/icon.ico")));

Personally, I would go with XAML resources and add them to App.xaml or a ResourceDictionary.

This will works 100%

ni.Icon = new Icon(Application.GetResourceStream(new Uri("pack://application:,,,<Image Location From root>")).Stream);

Example:

notify.Icon = new Icon(Application.GetResourceStream(new Uri("pack://application:,,,/images/favicon.ico")).Stream);
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!