2016-03-01 3 views
1

Я работаю над shared project, и я внедрил Master Detail Page. Теперь я добавил изображение в общий проект (aka embedded image). Действие сборки для изображения: Встроенный ресурс, и я следую советам, использующим пространство имен (HelloForms) и подпапку (Ressources). Результат должен быть следующим:Использование свойства значка со встроенными изображениями в Xamarin.Forms

http://www.xforms-kickstarter.com/SlideOutMenu/screenshot-menu.png

Как вы можете видеть, что leftBarButtonItem устанавливается через Icon свойства. Я попытался установить Icon свойства, как следующее:

Icon = Device.OS == TargetPlatform.iOS ? "HelloForms.Ressources.menu.png" : null; 

и

Icon = new FileImageSource { File = "HelloForms.Ressources.menu.png" }; 

В настоящее время я получаю название Master страницу, показанных вместо Icon. Что мне нужно изменить, чтобы заставить это работать? Меня интересует решение встроенных изображений и меньше в местных изображений.

ответ

2

Ваш код неправильно, вы хотите использовать ImageSource.FromResource, который создан явно для этого:

Icon = ImageSource.FromResource("HelloForms.Ressources.menu.png"); 

EDIT:

Икона является FileStream так ImageSource не может быть использован. Кроме того, Xamarin сделал это по уважительной причине, этот файл будет использоваться для представления приложения на рабочем столе Android, поэтому он должен быть доступен системе, а встроенный ресурс не может быть таким, как внутри файла ресурсов.

«Встраиваемый ресурс» вызывает путаницу здесь, в проектах iOS. Xamarin изменил действие по умолчанию «Контент» на «Встроенный ресурс», что приводит к тому, что он встроен в сборку .net, но нет, он скопирован в проект.

Просто добавьте файл в проект iOS/Android в качестве ресурса и используйте имя файла напрямую.

+1

Я уже пробовал это, но я получаю * Не могу неявно преобразовать тип «Xamarin.Forms.ImageSource» в «Xamarin.Forms.FileImageSource» *. В ссылках моего вопроса вы можете видеть, что 'Icon' нуждается в' FileImageSource'. Кастинг невозможен (приложение падает затем). – testing

+1

Тогда вы не можете использовать ресурс для подачи этого свойства, единственное, что приходит мне на ум, - сначала скопировать файл ресурсов в локальный файл, а затем использовать его ... действительно уродливо. Кроме того, Xamarin действительно установил это как FileSource по уважительной причине, этот значок будет использоваться системой (Android) для представления приложения, поэтому он должен быть доступен, изображение ресурса будет храниться в файле ресурсов, и система не сможет получить доступ Это. – Gusman

+0

Интересная часть состоит в том, что [этот сайт] (http://www.xforms-kickstarter.com/#a-slide-out-menu-using-a-master-detail-page), похоже, делает это с помощью кнопки «Icon = Device.OS == TargetPlatform.iOS? "menu.png": null; '. Итак, как бы выглядело, если изображение было встроено в проект iOS, например? Можно ли использовать свойство «Значок»? – testing

0

menu.png был добавлен в общий проект, который является неправильным. Добавление его в Ресурсы папка проекта iOS (Build Action = BundleResource) кажется, делает трюк. Тогда вам понадобится только этот код

Icon = Device.OS == TargetPlatform.iOS ? "menu.png" : null; 

, чтобы заставить его работать. Кажется, что я неправильно понял Встраиваемые изображения.

Смежные вопросы