Accessing resources from code for setting NotifyIcon.Icon
c#, embedded-resource, notifyicon, wpf
Solution
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.
Problem
I am trying to get the Icon of a `NotifyIcon` in WPF. So I have added a `.ico` file to my solution in a `Resources` folder and set the build action to `Resource`. I am trying to grab this resource in code behind like so: `var icon = (Icon) Application.Current.FindResource("/Resources/icon.ico")` This doesn't work. In addition to this: `Application.Current.Resources.Count` returns `0`. EDIT `var i = new Icon(Application.GetResourceStream(new Uri("/systemtrayicon.ico", UriKind.Relative)).Stream);` With the icon in the root and the build action set to `Resource`. Still not working. EDIT AGAIN: I needed to Clean the solution and rebuild as per: WPF throws "Cannot locate resource" exception when loading the image