Как я могу отображать изображения из произвольной папки в Xamarin Forms в Windows 8

Это может быть мертвая лошадь, но мне нужно иметь возможность предоставить локальную папку, полную изображений, ВНЕ моего приложения Xamarin - не как ресурсы, не требующие компиляции, чтобы добавить больше изображений - и отобразить эти изображения в приложении, в объектах Image. Моя основная целевая платформа - Windows 10. Другие, которые приятно иметь, не требуются.

Образ Xamarin Forms обычно принимает либо имя файла (без пути), либо URI. Я не могу получить ни один метод, чтобы найти и отобразить изображения из локальной файловой системы. Я должен делать что-то не так.

Нерабочий образец:

Image i = new Image();
i.Source = ImageSource.FromFile(some.png); // Needs to be from folder on local disk
grid.Children.Add(i, c, r);

Большинство статей, которые я нахожу, объясняют, как связать изображения с приложением как часть источника; снова мне нужно отобразить их в приложении из папки БЕЗ связывания их с приложением. Пользователи должны иметь возможность добавлять больше изображений в папку, и они будут работать в приложении без перекомпиляции / переустановки - как галерея изображений.

РЕДАКТИРОВАТЬ: я могу успешно прочитать текстовый файл с помощью PCLStorage https://github.com/dsplaisted/pclstorage. Есть ли способ связать это с Xamarin формирует изображение?

2 ответа

Решение

Вам нужно написать класс для платформы, чтобы читать изображения и возвращать поток, который может быть использован StreamImageSource. Затем вы можете использовать DependencyService, чтобы представить это поведение вашему Forms PCL.

В качестве альтернативы, вы можете использовать PCLStorage

  var f = await FileSystem.Current.LocalStorage.GetFileAsync (path);

  Stream s = await f.OpenAsync (FileAccess.Read);
  image.Source = ImageSource.FromStream(() => s);

По сути, вы не можете. Если вы не связываете изображения с вашим приложением, вам нужно каким-то образом передать изображения в приложение. Наиболее распространенным случаем является то, что вы размещаете эти изображения на веб-сервере, где приложение загружает изображения с этого веб-сервера.

Другие вопросы по тегам