Search code examples
wpfxamlpathwindowicons

What do image source paths mean in xaml?


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?


Solution

  • 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