Перейти к основному содержимому

Ресурсы (Assets)

Многим приложениям необходимо включать ресурсы, такие как растровые изображения, стили и словари ресурсов. Словари ресурсов содержат графические базовые элементы, которые могут быть объявлены в XAML. Стили также могут быть написаны в XAML, но растровые изображения - это бинарные файлы, например, форматы PNG и JPEG.

Включение ресурсов

Вы включаете ресурсы (Assets) в приложение, используя элемент <AvaloniaResource> в файле проекта.

Например, шаблон решения Avalonia .NET Core MVVM App создает папку с названием Assets (содержащую файл avalonia-logo.ico) и добавляет элемент в файл проекта для включения всех файлов, расположенных там. Следующим образом:

<ItemGroup>
<AvaloniaResource Include="Assets\**"/>
</ItemGroup>

Вы можете включить любые файлы, добавив дополнительные элементы <AvaloniaResource> в эту группу элементов.

подсказка

Имя элемента AvaloniaResource здесь только указывает, что ресурсы будут внутренне храниться как ресурсы .NET при сборке. Однако, в терминологии Avalonia UI, эти файлы называются 'Ресурсы' (Assets), чтобы отличать их от 'XAML-ресурсов'.

Ссылки на включенные ресурсы

После включения файлов ресурсов на них можно ссылаться по мере необходимости в XAML, определяющем ваш UI. Например, на эти ресурсы можно ссылаться, указав их относительный путь:

<Image Source="icon.png"/>
<Image Source="images/icon.png"/>
<Image Source="../icon.png"/>

В качестве альтернативы можно использовать путь от корня:

<Image Source="/Assets/icon.png"/>

Ресурсы библиотек

Если ресурс включен в другую сборку, отличную от файла XAML, тогда вы используете схему URI avares:. Например, если ресурс содержится в сборке с названием MyAssembly.dll в папке Assets, тогда вы используете:

<Image Source="avares://MyAssembly/Assets/icon.png"/>

Преобразование типов ресурсов

Avalonia UI имеет встроенные конвертеры, которые могут загружать ресурсы для растровых изображений, иконок и шрифтов «из коробки». Таким образом, URI ресурса может быть автоматически преобразован в любой из следующих типов:

  • Изображение - тип Image
  • Растровое изображение - тип Bitmap
  • Иконка окна - тип WindowIcon
  • Шрифт - тип FontFamily

Загрузка ресурсов в коде

Вы можете написать код для загрузки ресурсов, используя статический класс AssetLoader. Например:

var bitmap = new Bitmap(AssetLoader.Open(new Uri(uri)));

Переменная uri в приведенном выше коде может содержать любой действительный URI со схемой avares: (как описано выше).

Avalonia UI не предоставляет поддержку для схем file://, http:// или https://. Если вы хотите загружать файлы с диска или из Интернета, вы должны реализовать эту функциональность самостоятельно или использовать реализации сообщества.

к сведению

Avalonia UI имеет реализацию загрузчика изображений от сообщества по адресу https://github.com/AvaloniaUtils/AsyncImageLoader.Avalonia