I'm looking at the source code for the project I'm working on in Visual Studio, and the paths look weird in the WPF window XAML. For example, the icon member of the window element looks like this: Icon="/ProjectName;component/icons/ProjectName.ico"
First of all, what does the semicolon mean? Does that indicate two possible paths? That doesn't make sense.
I'm guessing ProjectName;component
represents a path, because there's no component
folder in my project. In my project folder, icons/ProjectName.ico
is where the icon is.
What does it all mean?
That is a Resource File Pack URI, without the prefix pack://application:,,,
, which is automatically added by the XAML Parser.
The full Pack URI would be
pack://application:,,,/ProjectName;component/icons/ProjectName.ico
and would reference a resource file named ProjectName.ico
in an icons
subfolder in the referenced assembly ProjectName
. The ;component
part separates the assembly name from the file path.
If the resource file is in the local assembly, you could omit the referenced assembly part, and write
pack://application:,,,/icons/ProjectName.ico
or in XAML just
/icons/ProjectName.ico