UWP - Image Uri in Application Folder

2019-01-18 19:26发布

问题:

I'm having a little issue here in showing images.

So when I'm trying to load images from XAML, I can use a relative uri to the image source like this :

<Image Source="/Assets/image.jpg" />

But if I try to change the image source programatically from code behind, I always get an exception and I'm sure it's because of the false Uri. I tried something like this :

BitmapImage bitmapImage = new BitmapImage(new Uri("/Assets/image.jpg"));

Am I doing it wrong? Any help will be appreciated, thanks!

回答1:

To access files stored inside the application package, but from code where there is no inferred root authority, you need to specify the ms-appx: scheme :

So in your case it will be something like :

BitmapImage bitmapImage = 
                     new BitmapImage(new Uri("ms-appx:///[project-name]/Assets/image.jpg"));

Read this documentation for more details : https://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh965322.aspx

Hope it helps.



回答2:

You can also use it with BaseUri.

BitmapImage bitmapImage = new BitmapImage(new Uri(this.BaseUri, "/Assets/image.jpg"));

Assets is a folder name and you can change it with your any custom folder name :)



回答3:

I believe WPF is more forgiving and paths like "Assets/image.png" are possible. If you are writing a UWA (win 10) app then you need to use the "ms-appx" URI's.

My experience is "ms-appx:///Assets/image.png" works fine.

Yes, three "/"s (!) and no need for the name of the app in the path.



回答4:

Just use it like this

<Image Source="Assets/image.jpg" />


回答5:

Image img = new Image();
img.Source = new BitmapImage(new Uri("http://www.contoso.com/images/logo.png"));