Библиотека EremexControls.NET для Avalonia UI — Большое обновление (v 1.1 EAP)
Библиотека Контролов EMX Controls для Avalonia UI позволяет вам создавать многофункциональные графические интерфейсы для Windows, Linux, macOS и WebAssembly. Почти полгода назад вышла первая версия контролов. С тех пор библиотека развивалась и расширялась — появились новые компоненты и новые функции. А сегодня у нас большая новость — мы выпускаем EAP (early-access preview) для версии 1.1.
Позвольте поделиться с вами новыми возможностями библиотеки контролов, которые вы можете протестировать уже сегодня, скачав Демо-приложение или создав новый проект с контролами.
Предыдущие публикации можно найти здесь:
Ribbon
В составе библиотеки появился новый контрол Ribbon, который позволяет с легкостью создавать навигационные меню для ваших приложений в стиле Microsoft Office. Данный компонент может заменить классические панели инструментов на знакомое, думаю, всем «ленточное» преставление.
На настоящий момент возможности контрола уже включают:
Два режима отображения элементов: классический (в три строки) и упрощенный (в одну строку)
Множество поддерживаемых типов элементов: маленькие и большие кнопки, кнопки-переключатели, встроенные редакторы значений, группы кнопок и др.
Встроенные и всплывающие галереи с элементами
Панель быстрого доступа (QuickAccessToolbar), куда можно добавлять элементы в том числе во время работы приложения
Размещение элементов в зоне заголовков табов (RibbonPageHeader Items)
Колоризация табов (позволяет подсвечивать контекстные табы)
Навигация по элементам с помощью клавиатуры
Адаптивный лейаут групп и элементов в зависимости от ширины компонента.
Candlestick, или график «японские свечи»
Мы расширили набор представлений данных в нашем контроле CartesianChart, позволяющем строить графики в декартовой системе координат. Новый вид данных Candlestick («японские свечи») представляет собой финансовый график, показывающий изменение цены товара, акции или валюты.
Каждая точка в нем одновременно отображает 4 уровня цены: цена открытия, закрытия, максимальная и минимальная в течение определенного промежутка времени. Данными для компонента может быть список, элементы которого задают значения Open, Close, High и Low. Но также вы можете отдавать «сырые» данные, которые определяют цену в определенный момент времени, указав при этом любую временную дискретность для расчета свечей (например, секунда, минута, час, день, и т.д., или кратное значение — 2 минуты, 3 часа, и т.д.). Контрол автоматически агрегирует данные и вычисляет значения Open, Close, High и Low согласно заданной дискретности.
Heatmap, или тепловая карта
Наша библиотека пополнилась новым компонентом Heatmap (тепловая карта), предназначенным для представления значений двумерного массива с помощью цветового кодирования.
Тепловые карты применяются для визуального анализа изображений (например, полученных с тепловизора), подсветки определенных областей в двумерных массивах данных, нахождения связей, аномалий и т.д. Цвет каждой точки на «карте» определяется ее значением. Вы можете задать произвольное цветовое кодирование данных, указав цвета характерные для определенных значений (значений перехода). Контрол автоматически вычислит цвет для каждой точки в матрице данных с помощью цветовых градиентов между цветами, заданными для ближайших значений перехода.
Heatmap поддерживает следующие возможности:
Задание произвольной цветовой кодировки
Кодировка с использованием оттенков серого цвета
Прокрутка и зумирование «карты» с помощью мышки
«Прицел» (показ значений под курсором)
Пометка уровней с помощью линий и полос
Настройка горизонтальной и вертикальной осей
Экспорт результата цифрового кодирования данных в графический файл или поток
MxMessageBox
Новый диалог MxMessageBox служит для показа сообщений и вопросов пользователям.
Как и все стандартные диалоги, MxMessageBox позволяет вывести текстовое сообщение, задать иконку и отобразить набор стандартных кнопок. Вы также можете дополнительно настроить диалог с помощью специального делегата. К преимуществам нового диалога относятся:
Поддержка наших визуальных тем оформления
Простой в использовании API
Диалог полностью находится в зоне ответственности и поддержки нашей команды
Расширяемость в соответствии c вашими требованиями.
Graphics3D Control
Новый компонент Graphics3DControl позволяет вам отобразить интерактивные 3D-модели в вашем Avalonia приложении.
Для задания модели созданы специальные классы, позволяющие определить вершины, материалы (в формате PBR), камеры, трансформации моделей и т.д.
Основные функции компонента включают:
Собственный API для задания моделей
Камера поддерживает 3D виды — перспективу и изометрию
Поворот, масштабирование и панорамирование модели в рантайме с помощью мышки и клавиатуры
Отображение нескольких моделей одновременно
Рендеринг с использованием аппаратного ускорения с помощью Vulkan SDK
Поддержка MVVM-шаблона для задания моделей
Data Grid и Tree List — Улучшения и новые возможности
Контролы Data Grid и Tree List предназначены для отображения и редактирования табличных и иерархических данных. В новой версии мы работали над улучшением скроллинга и механизма виртуализации данных. Также компоненты получили несколько новых функций.
Режим одновременного выбора нескольких строк
DataGrid тепрерь поддерживает множественное выделение строк (эта функция доступна в Tree List’e уже в версии 1.0).
Для выделения используются стандартные комбинации — клик мышью с одновременным нажатием клавиш CTRL и SHIFT и выделение с помощью клавиш навигации на клавиатуре. Также реализован публичный API для выбора строк в коде.
Перетаскивание строк (drag&drop)
В Data Grid’е реализована поддержка операций перетаскивания строк как внутри контрола, так и между контролами.
При этом синхронно перемещаются соответствующие бизнес-объекты в источнике данных. Если данные отсортированы или сгруппированы, перемещение строки автоматически меняет значения этой строки в отсортированных столбцах (для сохранения порядка строк). Подобные автоматические изменения значений могут быть нежелательными, поэтому операции drag&drop отключены по умолчанию в случае сортировки и группировки данных. DataGrid предоставляет специальную опцию, которая позволяет вам сознательно включить эту функциональность в режиме сортировки/группировки.
Для перетаскивания строк между контролами (Data Grid и/или Tree List) не требуется дополнительного кода, если их источники данных содержат бизнес-объекты одного типа.
Tree List уже поддерживает операции drag&drop, начиная с версии 1.0.
Создание колонок из коллекции объектов
В компонентах Data Grid и Tree List поддержали архитектурный шаблон MVVM для создания колонок. У вас появилась возможность создания колонок из списка бизнес-объектов на основе шаблона.
Вертикальный скроллинг для строк переменной высоты
Мы значительно улучшили вертикальный скроллинг для компонентов Data Grid, Tree List и Tree View в режиме, когда строки имеют разную высоту. Теперь компоненты поддерживают плавную прокрутку и точное позиционирование бегунка даже на большом количестве записей. В видео сравнивается вертикальный скроллинг в нашем контроле Data Grid со стандартным Avalonia-контролом ListBox.
Механизм виртуализации
В версии 1.1 мы реализовали механизм виртуализации для горизонтального скроллинга, что позволило ускорить работу компонентов с большим количеством колонок. Механизм виртуализации создает визуальные элементы (ячейки, заголовки столбцов и т.д.) только для видимой части контрола, тогда как при отсутствии данного механизма визуальные элементы создаются и хранятся в памяти для всего объема ячеек.
Механизм виртуализации для вертикального скроллинга был реализован в Data Grid и Tree List уже в версии 1.0.
Демо-приложение
Чтобы познакомиться c библиотекой EMX Controls для Avalonia UI поближе, вы можете воспользоваться обновленным демо-приложением. Обновление включает дополнительные модули, демонстрирующие новые компоненты и возможности библиотеки.
https://github.com/Eremex/controls-demo
Добавление EMX Controls в Avalonia приложение
Последняя версия пакетов библиотеки EMX Controls доступна на сайте nuget.org.
Eremex.Avalonia.Controls — Основной пакет, который содержит все контролы Eremex для Avalonia UI, включая редакторы, гриды и чарты.
Eremex.Avalonia.Themes.DeltaDesign — Библиотека с подключаемой темой оформления DeltaDesign для наших контролов.
Eremex.Avalonia.Templates — Пакет с шаблонами, которые позволяют легко создавать новые Avalonia-приложения с контролами.
Eremex.Avalonia.Controls3D — Пакет с контролом Graphics3DControl.
Чтобы добавить EAP-версию пакетов с библиотекой в ваш проект используйте галочку Include prerelease
при поиске пакетов в Visual Studio.
Документация
Документация для нашей библиотеки доступна на английском и русском языках.
https://eremexcontrols.net/
https://eremexcontrols.net/docsru/
Как связаться с нами и приобрести Библиотеку Контролов
Библиотека EMX Controls для Avalonia UI создана российской компанией Eremex, являющейся крупным разработчиком программного обеспечения для автоматизации проектирования радиоэлектронной аппаратуры. Библиотека зарегистрирована в российском реестре программного обеспечения: https://reestr.digital.gov.ru/reestr/2623413/? sphrase_id=4840131
Чтобы приобрести библиотеку контролов EMX Controls, оставьте заявку на сайте https://www.eremexcontrols.ru/ или https://www.eremexcontrols.com/. Наша команда свяжется с вами в ближайшее время. По поводу крупных заказов можно написать напрямую нашему менеджеру Илье в телеграм: @i_skv. Также принимаются заявки и из-за рубежа.
Если у вас есть технические вопросы, приходите к нам в Телеграм-каналы:
Пишите, мы готовы к конструктивному сотрудничеству. Будем рады быть вам полезными!
Планы
Реализованные улучшения в компонентах Data Grid и Tree List позволили ускорить их создание и начальную отрисовку примерно в два раза. А производительность обновления ячеек при скроллинге возросла в полтора раза. В настоящее время мы активно работаем над дальнейшим улучшением производительности механизма прокрутки за счет оптимизации редакторов, встроенных в ячейки контролов. Наша амбициозная цель — создать один из самых быстрых гридов с широкими возможностями.
А еще по секрету сообщим, что мы разрабатываем важную функциональность, связанную с фильтрацией данных в контролах Data Grid и Tree List, а также язык для задания фильтрационных критериев. Они не войдут в версию 1.1, но в наших планах выпустить их как можно скорее. Следите за новостями.