В общем случае это невозможно, вы пытаетесь получить доступ к изображению внутри PCL, используя Uri, отформатированный как Windows Phone.
Идея PCL состоит в том, чтобы избежать частей, специфичных для платформы, и предоставить общий способ работы с кодом. В результате изображения и другие ресурсы не включены.
Вы можете перемещать изображения в проект WP. В любом случае нет смысла использовать их в приложении W8. Вам нужны изображения с более высоким разрешением и так далее.
Есть хорошая статья о ресурсах в PCL. http://msdn.microsoft.com/en-us/library/hh871422.aspx
Основная идея в том, что внутри можно хранить только строковые ресурсы:
Исключение других членов ResourceManager
из переносимой библиотеки классов означает, что сериализованные объекты, нестроковые данные и изображения не могут быть извлечены из файла ресурсов. Вы можете обойти это ограничение, сохранив данные объекта в строковой форме. Например, вы можете хранить числовые значения в файле ресурсов, преобразовывая их в строки, и вы можете извлекать их, а затем преобразовывать обратно в числа, используя метод Parse или TryParse числового типа данных. Вы можете преобразовать изображения или другие двоичные данные в строковое представление, вызвав метод Convert.ToBase64String
, и восстановить их в массив байтов, вызвав метод Convert.FromBase64String
.
p.s. Здесь, вы можете найти длинную ветку об этом. Есть некоторые «решения», но я бы предпочел хранить изображения в сборках для конкретной платформы, если это возможно.
person
Anton Sizikov
schedule
09.06.2013