Библиотека Контролов 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, но в наших планах выпустить их как можно скорее. Следите за новостями.

Комментарии (3)


  1. Evengard
    22.11.2024 17:55

    Это ведь не OpenSource решение?


    1. xtraroman Автор
      22.11.2024 17:55

      Это 100% коммерческий продукт. Можно использовать бесплатно в режиме триала, но будет показывать плашку. Исходники даём пока только крупным клиентам. Мы не используем обфускацию кода. Это принципиальная позиция. Хотите посмотреть детали реализации - можно это сделать в ilspy


  1. LisaRouse
    22.11.2024 17:55

    интересно