Добавлен проект UI

This commit is contained in:
2026-01-07 22:33:42 +03:00
parent b6de0543b7
commit ca5d912c9c
21 changed files with 1188 additions and 4 deletions

View File

@@ -0,0 +1,49 @@
using Lattice.Core.Abstractions;
using Lattice.Core.Models;
using Microsoft.UI.Windowing;
using Microsoft.UI.Xaml;
namespace Lattice.UI.Controls;
/// <summary>
/// Обеспечивает поддержку выноса панелей в отдельные нативные окна Windows (Floating Windows).
/// </summary>
public class LatticeFloatingWindowHost
{
private readonly ILayoutService _manager;
/// <summary>
/// Инициализирует хост плавающих окон.
/// </summary>
/// <param name="manager">Общий менеджер макета приложения.</param>
public LatticeFloatingWindowHost(ILayoutService manager)
{
_manager = manager;
}
/// <summary>
/// Создает новое окно Windows для конкретного узла макета.
/// </summary>
/// <param name="node">Узел (панель), который нужно вынести в отдельное окно.</param>
public void CreateFromNode(LayoutNode node)
{
// Создаем новое окно WinUI 3
var newWindow = new Window();
// Создаем и настраиваем хост докинга для нового окна
var host = new LatticeDockHost
{
Manager = _manager, // Передаем общий менеджер, чтобы дерево было синхронизировано
RootNode = node, // Указываем хосту отображать ТОЛЬКО этот узел
};
newWindow.Content = host;
// Настройка нативного окна через AppWindow
AppWindow appWin = newWindow.AppWindow;
appWin.Title = node.Name;
// Показываем окно
newWindow.Activate();
}
}