Ресурсы (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