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