I'm currently working w/ VS studio 2010, .NET 4.0. Here is my scenario:
I currently have a class library project called "Images" that contains a sub folder called "Icons". All my icons currently live in this project and are accessed by multiple projects via siteoforigin. Everything shows up fine while in the designer, but during run time the images do not display.
Here is my folder structure:
All projects are referencing the Images class lib. proj, and all icons inside the "icons" sub-folder within the "Images" project is set to: "Build Action = Resource".
The xaml looks like this (which is perfectly visible during design time):
<Button Name="Button1" Click="Button1_Click">
<Button.Content>
<Image Source="pack://siteoforigin:,,,/Data.Images;component/Icons/Button1.png" />
</Button.Content>
</Button>
This was driving me crazy. I tried lots of different things based on various articles but nothing worked. My xaml window and image are in a separate DLL from the executable assembly. Not sure if that was part of my problem.
In the end I had success with:
The string visual studio formatted for my image was:
<Image Source="/Paperless.Common;component/Resources/Checkbook.png" />
where "Paperless.Common" was the name of my assembly, and "Checkbook.png" was my image that resided in a "Resources" folder.
For completeness, the above URI is a Resource File Pack URI, where the URI prefix part is automatically added by the XAML Parser.
The full URI - which you would have to use in code behind - has a pack://application:
prefix and would also work in XAML:
Source="pack://application:,,,/Paperless.Common;component/Resources/Checkbook.png"
Maybe the Image does not have the Build Action set to Resource. If it's anything else, including Embedded Resource, then it will not display properly at runtime.
siteoforigin
is for files copied to the executable directory or subdirectories, for resources you should use application
as authority as far as i know.
SiteOfOrigin:
Path: The name of the site of origin file, including its path relative to the location from which the executable assembly was launched.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With