Arhn - архитектура программирования

Используйте свойство Icon с внедренными изображениями в Xamarin.Forms

Я работаю над общим проектом и реализовал Главная страница сведений. Теперь я добавил изображение в общий проект (он же встроенное изображение). ). Действие сборки для образа — Встроенный ресурс, и я следую совету, принимая во внимание пространство имен (HelloForms) и подпапку (Ressources). Результат должен быть следующим:

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. Что мне нужно изменить, чтобы это заработало? Меня интересует решение встроенных изображений и меньше локальных изображений.


Ответы:


1

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

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

ИЗМЕНИТЬ:

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

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

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

01.03.2016
  • Я уже пытался это сделать, но получаю сообщение Невозможно неявно преобразовать тип Xamarin.Forms.ImageSource в Xamarin.Forms.FileImageSource. По ссылкам моего вопроса видно, что Icon нужен FileImageSource. Трансляция невозможна (приложение вылетает). 01.03.2016
  • Тогда вы не можете использовать ресурс для подачи этого свойства, единственное, что приходит мне в голову, это сначала скопировать файл ресурса в локальный файл, а затем использовать его... действительно уродливо. Кроме того, Xamarin установил это как FileSource по уважительной причине, этот значок будет использоваться системой (Android) для представления приложения, поэтому он должен быть доступен, образ ресурса хранится в файле ресурсов, и система не может получить доступ Это. 01.03.2016
  • Интересно то, что этот сайт похоже делает это с Icon = Device.OS == TargetPlatform.iOS ? "menu.png" : null;. Итак, как бы это выглядело, если бы изображение было встроено, например, в проект iOS? Могу ли я тогда использовать свойство Icon? 01.03.2016
  • Да, именно так, возможно, встроенный ресурс вызывает здесь путаницу, в проектах iOS Xamarin изменил действие Content по умолчанию на встроенный ресурс, что наводит на мысль, что он встраивается в сборку .net, но нет, он копируется в проект. Но здесь вы добавляете его в общий проект, поэтому я не уверен, меняет ли это значение действия компиляции. Попробуй это. 01.03.2016
  • Теперь я добавил menu.png в папку Resources проекта iOS, и теперь он отображается, как указано на сайте! 01.03.2016

  • 2

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

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

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

    01.03.2016
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..