Загружать изображения из PCL в XAML

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

<ImageBrush ImageSource="/PortableClassLibrary1;component/Assets/Images/Background.jpg" />

но изображение не загружается. Можно ли его загрузить?


person Juan Francisco    schedule 02.05.2013    source источник
comment
Я могу подтвердить ошибку. Это озадачивает, надеюсь, вы разберетесь.   -  person Toni Petrina    schedule 02.05.2013
comment
Я пробовал даже с библиотекой классов Windows Phone, и она также не загружает изображения, хотя дизайнер показывает изображение правильно.   -  person Juan Francisco    schedule 05.05.2013


Ответы (1)


В общем случае это невозможно, вы пытаетесь получить доступ к изображению внутри 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