UWP - Изображение Uri в папке приложения

У меня есть небольшая проблема при показе изображений.

Поэтому, когда я пытаюсь загрузить изображения из XAML, я могу использовать относительный uri для источника изображения следующим образом:

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

Но если я попытаюсь изменить исходный код изображения программно из кода позади, я всегда получаю исключение, и я уверен, это из-за ложного Uri. Я пробовал что-то вроде этого:

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

Я делаю это неправильно? Любая помощь будет оценена, спасибо!

Ответы

Ответ 1

Чтобы получить доступ к файлам, хранящимся внутри пакета приложения, но из кода, в котором нет установленных полномочий root, вам необходимо указать схему ms-appx:

Итак, в вашем случае это будет что-то вроде:

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

Прочтите эту документацию для более подробной информации: https://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh965322.aspx

Надеюсь, что это поможет.

Ответ 2

Вы также можете использовать его с BaseUri.

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

Активы - это имя папки, и вы можете изменить ее с любым именем пользовательской папки:)

Ответ 3

Просто используйте его так

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

Ответ 4

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

Ответ 5

Я считаю, что WPF является более прощающим и возможны такие пути, как "Assets/image.png". Если вы пишете приложение UWA (win 10), вам нужно использовать URI "ms-appx".

Мой опыт "ms-appx:///Assets/image.png" отлично работает.

Да, три "/" (!) и нет необходимости в имени приложения в пути.