3.0 KiB
3.0 KiB
Lattice.Core
Lattice.Core — это платформонезависимое ядро (Layout Engine) для построения сложных интерфейсов с системой докинга в стиле Visual Studio 2026.
Библиотека является частью экосистемы Lattice и отвечает исключительно за математику макета, управление деревом узлов и контекстное состояние, не имея зависимостей от конкретных UI-фреймворков.
🚀 Особенности
- Агностическая архитектура: Полная совместимость с .NET 8+, WinUI 3 и Uno Platform.
- Древовидная компоновка: Управление интерфейсом через узлы (
SplitиContent). - Context-Aware System: Встроенный сервис отслеживания контекста для динамического переключения панелей инструментов.
- Smart Docking: Алгоритмы автоматического разделения зон и схлопывания пустых контейнеров.
- JSON Persistence: Полиморфная сериализация макетов для сохранения и загрузки состояний пользователя.
📁 Структура проекта
Abstractions/— Интерфейсы для расширения системы.Models/— Базовые сущности дерева (узлы, направления, ориентация).Engine/—LayoutManager, реализующий логику трансформации дерева.Context/— Сервисы управления активными состояниями и командами.Persistence/— Логика сохранения макета в JSON.
🛠 Использование
Создание базового макета
var layoutManager = new LayoutManager();
// Создаем контентные узлы
var explorer = new ContentNode(new MyToolComponent("Solution Explorer", "Explorer"));
var editor = new ContentNode(new MyDocumentComponent("Main.cs", "CodeEditor"));
// Устанавливаем редактор как корень
layoutManager.SetRoot(editor);
// Прикрепляем проводник слева от редактора
layoutManager.Dock(explorer, editor, DockDirection.Left);
//Переключение контекста
var contextService = new ContextManager();
// Вызывается при активации вкладки в UI
contextService.SetContext("CodeEditor");
// Проверка видимости команд в текущем контексте
bool isDebugVisible = contextService.IsCommandVisible("btnDebug", "CodeEditor");