Друзья, совсем недавно наша компания Эремекс зарегистрировала корпоративный аккаунт на Хабре, и теперь здесь будут выходить новости, статьи и всё интересное, что происходит с продуктами компании. В том числе и новости из нашей команды, которая занимается кроссплатформенной библиотекой контролов Eremex Controls для Avalonia UI. Мы надеемся, что вы найдете эту и будущие публикации полезными. Так что оставайтесь с нами, будем рады видеть ваши комментарии и мнения.

А сегодня мы бы хотели рассказать о дальнейшем развитии нашей библиотеки Eremex Controls для Avalonia UI. На днях вышло большое обновление библиотеки до версии 1.2, в котором добавили множество полезных функций для самых востребованных контролов. О главных из них расскажем ниже.

article-v12-feed-image
Но перед этим позвольте вкратце напомнить, что из себя представляет библиотека Eremex Controls.

EMX Controls — профессиональная библиотека визуальных компонентов для создания графических интерфейсов в кроссплатформенных приложениях на базе Avalonia UI. В ее состав входят такие контролы, как:

Библиотека поддерживает все популярные отечественные и зарубежные операционные системы: Windows 11, Windows 10, Astra Linux, Альт Linux, РЕД ОС, Debian, Ubuntu и macOS. Она также зарегистрирована в российском реестре программного обеспечения: https://reestr.digital.gov.ru/reestr/2623413/?sphrase_id=4840131.

Дополнительные подробности на нашем сайте:

Если вы не следили за развитием библиотеки с самого начала, вы можете ознакомиться с нашими предыдущими публикациями:

В новой версии библиотеки EMX Controls мы уделили особое внимание инструментам для работы с данными — контролам DataGrid и TreeList, которые служат для отображения и редактирования плоских и иерархических таблиц. В эти контролы мы добавили ряд функций, о которых давно просили нас наши пользователи.

Также развитие получили контролы для создания MDI-интерфейса (DockManager), построения графиков (Cartesian Chart) и другие компоненты.

DataGrid и TreeList – Бэнды

При отображении табличных данных нередко возникает задача визуально сгруппировать колонки под общими заголовками. В версии 1.2 в контролах DataGrid и TreeList появилась поддержка Бэндов (от англ. band - связка, диапазон, объединять). Используя бэнды, теперь можно отобразить дополнительные заголовки над колонками и даже создать многоуровневую структуру.

article-v12-bands
Бэнды

Основные возможности:

  • Простая настройка бэндов: после создания структуры бэндов-объектов они связываются с колонками по имени.

  • Многоуровневые бэнды (показаны на картинке выше)

  • Автоматическая генерация бэндов и связь их с колонками на основе атрибутов DataAnnotations.

Более подробную информацию о создании бэндов с примерами вы можете найти в нашей документации:

О документации на английском

В самой первой нашей статье мы поднимали вопрос языка, на котором создавать документацию для продукта. И тогда, и сейчас основным языком для написания документации для библиотеки контролов мы выбираем английский. Это не только международный язык общения в IT, но и язык, из которого вышло большинство технических терминов. Их прямой перевод на русский зачастую лишь усложняет понимание. В нашей документации используется довольно простой английский, который легко поймут не только русскоговорящие, но и, надеемся, наши коллеги из Китая и других далеких стран.

Основной массив русской версии документации был создан на основе автоматического перевода английской версии с помощью Яндекс Переводчика. Но для перевода некоторых сложных топиков мы прибегли к помощи нейросети Deepseek. Во всех переведенных статьях мы указали авторство перевода.

DataGrid и TreeList – Фильтры в Колонках

Базовый функционал должен быть удобным. Это касается и механизма фильтрации, который должен быть как удобным, так и быстрым. Начиная с версии 1.2, пользователи могут фильтровать данные прямо из заголовков колонок: просто открыть выпадающий список и выбрать значение для применения фильтра.

article-v12-columnfilters
Выпадающий фильтр

В текущей версии поддерживается выбор только одного значения в списке фильтрации. Но в скором времени мы добавим UI и для множественного выбора.

Мы также реализовали API, позволяющий создавать фильтрационные критерии в коде. В выражениях можно использовать множество операторов и функций для работы со значениями разных типов (числа, строки, дата/время и логические значения). Пример:

dataGrid.FilterString = "[FirstName] In ('Julia', 'Janet', 'Pat') AND [Position] = 'Accountant'";
article-v12-filterincode
Пример фильтрации через код

При применении любого фильтра (как через UI, так и программно) в нижней части контрола теперь показывается фильтрационная панель. Она позволяет временно отключить текущий фильтр или полностью отменить его.

Документация:

DataGrid и TreeList – Экспорт и Копирование в Буфер Обмена

Часто возникают ситуации, когда необходимо выгрузить данные из контрола в один из популярных форматов. В новой версии библиотеки контролы DataGrid и TreeList поддержали экспорт в форматы XLSX и PDF, что открывает большие возможности для дальнейшей обработки данных и их печати.

Хотелось бы акцентировать внимание на сохранении конфигурации данных при экспорте в XLSX. Механизм экспорта переносит правила сортировки и группировки данных, а также форматирования значений ячеек в результирующий XLSX-документ.

article-v12-exportxlsx
Эскпорт в формат Excel

Экспорт в PDF работает по принципу WYSIWYG, т.е. результат экспорта максимально приближен к изначальному макету контрола DataGrid и TreeList.

article-v12-exportpdf
Экспорт в PDF

При экспорте вы можете дополнительно настроить ряд параметров (например, при экспорте в PDF - формат бумаги и отступы, а при экспорте в XLSX - настройки форматирования, культуру и т.д.)

В новой версии мы также добавили метод для копирования выбранных строк в системный буфер обмена. При этом вы можете включать или исключать заголовки колонок из копирования.

Документация:

Docking UI - Переключатель Документов

Для удобной навигации в сложных многооконных интерфейсах, созданных с помощью компонента DockManager, мы добавили встроенный Document Switcher (Переключатель Документов). Этот инструмент вам знаком по Visual Studio IDE и JetBrains Rider. Он отображает список всех открытых документов и панелей и позволяет быстро переключаться между ними.

article-v12-documentswitcher
Document Switcher

Пользователь может нажать CTRL+TAB или CTRL+SHIFT+TAB, чтобы открыть Document Switcher, и уже в нем активировать нужную панель.

Документация:

Cartesian Chart - График Lollipop

Cartesian Chart — один из больших и популярных контролов в нашей библиотеке, поддерживающий построение множества типов диаграмм – от точечных и линейных до столбчатых и "японских свечей". В новой версии добавился еще один вид диаграмм, так называемый Lollipop ("леденец"). В нем каждая точка представляется в виде вертикальной или горизонтальной линии с акцентным маркером на конце. Классические круглые маркеры действительно создают ассоциацию с леденцами.

article-v12-lollipopchart
Диаграмма Lollipop

Если стандартные маркеры вам не подходят, вы можете заменить их на любую SVG-иконку.

Документация:

Больше подробностей о новой версии библиотеки контролов вы найдете по ссылке ниже:

Демо-приложение

Лучший способ оценить библиотеку контролов — увидеть ее в действии. В нашем демо-приложении мы постарались представить все возможности библиотеки контролов EMX Controls.

article-v12-demoapp
Общий вид демо-приложения

Вы можете скачать Offline-версию приложения и запустить ее с помощью всего лишь одной команды:

Или открыть Online-версию демо-приложения в браузере:

Функциональность online-версии, к сожалению, ограничена возможностями WebAssembly.

Использование Библиотеки в Своих Проектах

Библиотека контролов Eremex Controls доступна на сайте nuget.org. Поэтому вы всегда можете ее протестировать в своих проектах. О том, как создать проект с нуля, мы написали руководство в нашей документации.

Заключение

Выход версии 1.2 — большой шаг в развитии библиотеки Eremex Controls, а ваши отзывы и комментарии помогут нам двигаться в правильном направлении. Присоединяйтесь к нашему Telegram-каналу, чтобы быть на связи с командой разработчиков, задавайте вопросы и делитесь идеями.

Команда EMX Controls