Друзья, мы готовимся к очередному релизу библиотеки контролов EMX Controls для Avalonia UI. В этом обновлении мы добавили одну из самых полезных функций в контролах Data Grid и Tree List, расширили визуальные темы, включили сервисы для работы с окнами и диалогами и многое другое. Читать далее
Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели6.5K
Обзор
Друзья, осень для нашей команды — время, когда мы готовимся к очередному релизу библиотеки контролов EMX Controls для Avalonia UI. Наша команда развивает этот продукт уже почти 5 лет, предоставляя вам многофункциональные визуальные компоненты для разработки графических интерфейсов под Windows, macOS, российские и зарубежные Linux, а также WebAssembly.
В новом релизе мы добавили одну из самых востребованных функций в контролах Data Grid и Tree List, расширили визуальные темы, включили сервисы для работы с окнами и диалогами и многое другое.
На днях мы выпустим версию 1.5. Ну а пока обновление библиотеки доступно в версии preview. Приглашаем вас всех протестировать библиотеку контролов. Самый простой способ — это скачать и запустить Демо‑приложение.
Наши предыдущие статьи:ИТОГИ (Summary) в контролах Data Grid и Tree ListКонтролы Data Grid и Tree List позволяют отображать и редактировать табличные данные (плоские и иерархические многоколоночные списки). Но с помощью них пользователь может выполнять и простой визуальный анализ данных (в частности, за счет функций сортировки, группировки и фильтрации). Начиная с версии 1.5, к этим инструментам анализа добавилась возможность вычисления Итогов (Summary). Теперь можно просто вычислить Итоги по любой колонке. Причем можно показать несколько итогов одновременно для любой конкретной колонки.

Типы Итогов «из коробки»: Сумма, Мин, Макс, Среднее и Количество
Ваш собственный алгоритм для вычисления Итогов — Событие CustomSummary позволяет задать свою функцию.
Несколько Итогов в одной колонке — Для каждой колонки можно вычислить любое число Итогов.
Отображение Итогов в другой колонке — Итоги, вычисленные по одной колонке, можно отобразить в другой.
Отдельно следует упомянуть возможности для пользователя управлять Итогами в рантайме.
Пользователи могут добавлять Итоги через кнопку Σ, которая открывает выпадающий список:

Для дополнительного управления итогами (изменение порядка и отображение в другой колонке) мы реализовали простой редактор:

В текущей preview версии доступно вычисление Итогов по всем записям. Но буквально в ближайшее время мы добавим и вычисление Итогов по группам строк (в режиме группировки) в контроле Data Grid.
Палитры для визуальной темыКак и большинство тем в Авалонии, визуальная тема для EMX Controls, поддерживает светлый и темный варианты. В новой версии библиотеки мы расширили нашу визуальную тему, добавив к базовой палитре еще 9. Все 10 палитр поддерживают светлый и темный варианты, в результате пользователь имеет возможность выбрать одну из 20 схем.

При переключении палитры обновляются цвета элементов интерфейса:
Фон окон, панелей и контейнеров.
Фон редакторов в разных состояниях.
Фон строк и ячеек в табличных контролах.
Цвета выделения, подсветки элементов под курсором и акцентов у фокусированных объектов.
И многое другое.
Вы также можете создать переключатель палитр в приложении, чтобы пользователь мог выбрать нужную схему под себя. В новой версии библиотеки мы добавили новый сервис для решения этой задачи:
Плотность пользовательского интерфейсаЧасто возникают сценарии, когда в окне приложения надо разместить как можно больше информации за счет уменьшения отступов и изменения размера шрифта визуальных элементов. В версии 1.5 мы добавили настройку плотности UI для темы оформления DeltaDesign. Теперь разработчики могут выбирать один из трех предустановленных режимов: Compact, Standard и Spacious.
Сервисы приложенияВ новой версии EMX Controls появились Application Services для MVVM‑приложений. Это набор сервисов, которые позволяют работать с окнами, диалогами и настройками тем оформления прямо из ViewModel, не обращаясь к типам Avalonia напрямую.
Что такое сервисСервис — это объект с определенным интерфейсом, через который ViewModel обращается к сервису, чтобы выполнить некое действие: показать диалог, открыть окно, спросить подтверждение, и так далее. При этом ViewModel не имеет ссылок на типы окон, диалогов и другие специфичные объекты. Сервис выполняет всю эту работу при обращении к нему через интерфейс.

Сервисы для взаимодействия с пользователем:
IMessageBoxService — Показывает стандартные окна сообщений с фиксированным набором кнопок (Ok, Yes/No, Yes/No/Cancel и так далее);
IDialogService — Показывает модальные диалоги, содержимое и кнопки которых задаются во ViewModel;
IChoiceDialogService — Показывает диалог с произвольным набором кнопок и возвращает результат нажатой кнопки;
IWindowService — Открывает немодальные окна, заданные с помощью дополнительных ViewModel.
Сервисы для работы с файлами:
IOpenFileDialogService — Показывает (синхронно или асинхронно) системный диалог открытия файла;
ISaveFileDialogService — Показывает (синхронно или асинхронно) системный диалог сохранения файла.
Инфраструктурные сервисы:
IWindowsManager — Отслеживает активное окно приложения. Другие сервисы автоматически обращаются к IWindowsManager, чтобы определить владельца для показываемых сообщений, диалогов и окон;
IAppearanceService — Управляет настройками текущей визуальной темы: переключение цветовой палитры, выбор между светлым и темным вариантом, а также выставление плотности интерфейса.
В контролы для визуализации графиков (CartesianChart — декартовы координаты, PolarChart — полярные координаты и SmithChart — диаграмма Смита) мы добавили опции для тонкой настройки линий. Теперь можно легко задать толщину линии, шаблон (например, штрихи), форму концов линии и др.
Docking UIКомпонент DockManager получил новое событие CustomizeDockGuide, которое позволяет управлять dock‑подсказками во время перетаскивания панелей. С его помощью можно динамически скрывать отдельные dock‑подсказки и таким образом запрещать определенные операции стыковки панелей.
Другие улучшенияData Grid и Tree List — В окне выбора колонок (Column Chooser) появилась команда (Select All), которая позволяет выбрать или снять выделение со всех колонок сразу:

Data Grid и Tree List — Теперь можно подписаться на событие DragOver, чтобы добавить возможность перетаскивания строк на пустую область (ниже всех строк). При перетаскивании в эту область строки будут добавлены в конец списка.
SpinEditor — Новое свойство AllowRoundOutOfRangeValue автоматически округляет введенное значение до ближайшего допустимого, если оно выходит за пределы диапазона.
Graphics3DControl — Аппаратный рендеринг через Apple Metal на macOS
В новой версии Graphics3DControl перешел на аппаратный рендеринг, используя Apple Metal API. Раньше применялся программный рендер, теперь же отрисовка выполняется силами GPU.
У нас появилось несколько новых шаблонов, в том числе шаблон приложения с сервисами (Application Services). Для удобства мы сократили короткие имена шаблонов. Теперь они начинаются с emx.

Eremex Avalonia.NET App (emx.app) — Базовое Avalonia‑приложение с подключенной библиотекой EMX Controls.
Eremex Avalonia.NET MVVM App (emx.mvvm) — Базовое MVVM‑приложение, в котором UI и бизнес‑логика разделены на слои View и ViewModel.
Eremex Avalonia.NET App with Application Services (emx.services) — MVVM‑приложение, в котором ViewModel использует сервисы для показа диалогов, выбора файлов и управления темой оформления.
Eremex Avalonia.NET MDI App (emx.mdi) — Приложение с многооконным интерфейсом (MDI), построенным на основе библиотеки Docking UI (компонент DockManager).
Eremex Avalonia Window (emx.window) — Пустое окно MxWindow (окно с поддержкой визуальных тем Eremex).
Чтобы установить шаблоны из preview‑версии, выполните команду:
dotnet new install Eremex.Avalonia.Templates@1.5.53-preview3После этого новый проект создаётся одной командой, например:
dotnet new emx.services -n MyAppАвтоматизированное тестированиеТакже мы серьёзно переработали автоматизированное тестирование EMX Controls. Сейчас количество тестов у нас превышает количество тестов в самой Avalonia UI. Мы перешли на MTP (Microsoft Testing Platform), благодаря чему добавили в CI ещё две платформы — macOS и WASM. Таким образом, каждый коммит теперь проверяется на Windows 10, Windows 11, Linux, macOS и WASM.

Пайплайн CI для одного merge request: 9 джобов, 43 909 тестов, около 21 минуты.
Документация для людей и для LLMMCP‑серверВсё больше разработчиков пишут код вместе с AI‑ассистентами. Чтобы ассистент знал наши контролы, мы развернули собственный MCP‑сервер. Помимо документации, примеров и API Reference, он содержит информацию из публичных тикетов нашего центра поддержки. Подключите его к своему ассистенту, и он будет отвечать на вопросы по EMX Controls с опорой на актуальные данные.
Кроме MCP, мы постарались сделать сайт eremexcontrols.net удобным не только для людей, но и для больших языковых моделей: добавили специальные индексы и сделали так, чтобы у всех статей были md‑версии.
API ReferenceУ нас появился API Reference в документации.
Документация в открытом репозиторииПо просьбам пользователей мы выложили документацию в публичный репозиторий: github.com/Eremex/controls‑doc. Её можно развернуть у себя, в том числе в закрытом контуре без доступа в интернет.
Демо‑приложениеНапоминаем, что у нас есть демо‑приложение, которое предоставляет один из лучших способов познакомиться с библиотекой EMX Controls. Новые и обновленные примеры помечены специальными значками:

Мы подготовили отдельную сборку демо‑приложения под macOS, которую вы можете скачать из https://github.com/Eremex/controls‑demo/releases и запустить.

Демо‑приложение на MacBook Air: пример Graphics3D Control работает сразу после запуска, без дополнительных настроек.
Как создать новый проектЕсли вы еще не работали с EMX Controls, создать новый проект можно легко из шаблона. Пакеты на nuget.org — это полностью рабочие подписанные сборки. Используйте следующий код, чтобы создать проект из шаблона с использованием этих сборок:
dotnet new install Eremex.Avalonia.Templates@1.5.53-preview3
dotnet new emx.mvvm -n MyAppТриалТриальный период (60 дней) дает вам возможность детально ознакомиться с библиотекой EMX Controls. До покупки лицензии все контролы и возможности библиотеки работают в полном объёме — единственное отличие от лицензированной версии состоит в небольшой триальной плашке, которая отображается в правом нижнем углу приложения. Никаких других ограничений нет.
Открытый кодСборки EMX Controls подписаны и намеренно не обфусцированы, поэтому детали реализации в любой момент можно изучить в ILSpy. Пакеты с nuget.org без проблем переносятся в закрытый контур и там работают в полном объёме — лицензия разработчика активируется офлайн. А если проекту требуются исходники, например для сертификации во ФСТЭК, мы готовы их предоставить.
Бесплатные лицензии для open‑source проектовХотим напомнить, что, если вы разрабатываете проект с открытым исходным кодом, то можно получить бесплатную некоммерческую лицензию на EMX Controls. Оформите заявку через сервис лицензирования open‑source проектов. Условия простые:
Проект размещён на GitHub и содержит README со ссылкой на eremexcontrols.net
Проект использует EMX Controls и распространяется под одной из лицензий MIT, Apache 2.0, BSD 2-Clause, BSD 3-Clause, ISC или MSPL.
Лицензия привязывается к имени проекта и мажорной версии библиотеки (при их смене нужно получить новую). Поддержка для бесплатных лицензий может быть ограничена. Подробности — в разделе «Licensing».
Полезные ссылкиПриглашаем всех протестировать новую версию 1.5 библиотеки EMX Controls, которая уже доступна на сайте nuget.org. Мы, как всегда, ждём ваших отзывов и предложений. Обратная связь помогает нам выбирать приоритеты и развивать наш продукт. Оставайтесь с нами.
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | Elevating security, control, and accessibility: Stack Internal 2026.6 | 0 | 15.73 | 03-09-2026 |
| 2 | Культовый плеер эпохи Windows XP Media Player Classic получил обновление — Home Cinema 2.8.3 | 0 | 18.57 | 11-10-2026 |
| 3 | Enterprise Assets Library | 0 | 6.4 | 01-06-2026 |
| 4 | UI Accessibility Updates | 0 | 6.4 | 24-04-2026 |
| 5 | Microsoft Execution Containers (MXC) hits general availability | 0 | 14.06 | 07-10-2026 |
| 6 | Environments | 0 | 8.26 | 18-08-2026 |
| 7 | Windows-Update 26H2 ist da – und mit ihm drei fiese Bugs | 0 | 14.99 | 01-10-2026 |
| 8 | Библиотека операций и другие улучшения Astra Migration 1.1 делают управление переходом на Astra Linux эффективнее | 0 | 10.4 | 05-10-2026 |
| 9 | Comment on Microsoft Releases the Windows 11 2026 Update, Version 26H2, as a Small Enablement Package by Anonymous | 0 | 20.99 | 03-10-2026 |