5.3 KiB
5.3 KiB
Lattice.Studio
Lattice.Studio — это модуль, предоставляющий готовую визуальную оболочку для приложений на WinUI 3, оформленную в стиле Visual Studio 2026.
Он включает:
- нативный Windows 11 TitleBar,
- слот для меню,
- контекстный тулбар,
- область уведомлений,
- хост для докинга,
- статус‑бар,
- тему оформления (Dark/Light),
- и главное — готовое окно верхнего уровня
LatticeStudioWindow.
LatticeStudioShell служит визуальным контейнером, а LatticeStudioWindow — удобной точкой входа для реальных приложений.
📦 Состав модуля
1. LatticeStudioShell.xaml
Определяет визуальную структуру IDE‑оболочки:
- TitleBar:
- заголовок,
- иконка (
IconSource), - слот для меню (
MenuContent), - drag‑region.
- LatticeContextualToolbar — контекстный тулбар.
- NotificationArea — стек уведомлений.
- LatticeDockHost — хост для системы докинга.
- StatusContent — слот для статус‑бара.
2. LatticeStudioShell.xaml.cs
Реализует логику оболочки:
- интеграция с сервисами:
ILayoutService,IContextService,INotificationService;
- обновление тулбара при смене контекста;
- отображение уведомлений через
InfoBar; - настройка окна:
ExtendsContentIntoTitleBar,- кастомный TitleBar,
- Mica Alt backdrop.
3. LatticeStudioWindow.xaml / .cs
Готовое окно верхнего уровня:
- содержит
LatticeStudioShell, - проксирует его свойства наружу:
Title,Subtitle,MenuContent,StatusContent,TitleBarIcon,
- предоставляет удобный метод инициализации:
Initialize(...)— с пользовательскими сервисами,Initialize()— со стандартными реализациями.
Используется как базовый класс для MainWindow.
4. Themes/StudioThemes.xaml
Содержит тему оформления:
- цвета панелей,
- цвета заголовков,
- акцентные цвета,
- поддержка Light/Dark.
✨ Возможности
- Готовая IDE‑оболочка для WinUI 3.
- Интеграция с Lattice.Core:
- докинг,
- контексты,
- команды.
- Нативный Windows 11 TitleBar.
- Встроенная система уведомлений.
- Слоты для меню и статус‑бара.
- Тема в стиле Visual Studio 2026.
- Готовое окно
LatticeStudioWindowдля быстрого старта.
🚀 Быстрый старт
🅰 Вариант 1 — минимальный XAML (всё в C#)
MainWindow.xaml
<studio:LatticeStudioWindow
x:Class="MyApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:studio="using:Lattice.Studio.Controls">
</studio:LatticeStudioWindow>
MainWindow.xaml.cs
public sealed partial class MainWindow : LatticeStudioWindow
{
public MainWindow()
{
InitializeComponent();
Title = "My App";
MenuContent = BuildMenu();
StatusContent = new TextBlock { Text = "Ready" };
Initialize(); // стандартные сервисы
}
}
🅱 Вариант 2 — декларативный XAML (меню/статус‑бар в XAML)
MainWindow.xaml
<studio:LatticeStudioWindow
x:Class="MyApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:studio="using:Lattice.Studio.Controls">
<studio:LatticeStudioWindow.MenuContent>
<MenuBar>
<MenuBarItem Title="File">
<MenuFlyoutItem Text="New" />
<MenuFlyoutItem Text="Open" />
<MenuFlyoutSeparator />
<MenuFlyoutItem Text="Exit" />
</MenuBarItem>
</MenuBar>
</studio:LatticeStudioWindow.MenuContent>
<studio:LatticeStudioWindow.StatusContent>
<TextBlock Text="Ready" Margin="8,0"/>
</studio:LatticeStudioWindow.StatusContent>
</studio:LatticeStudioWindow>
MainWindow.xaml.cs
public sealed partial class MainWindow : LatticeStudioWindow
{
public MainWindow()
{
InitializeComponent();
Title = "My App";
Initialize(); // стандартные сервисы
}
}
🧩 Инициализация вручную
Если нужны свои сервисы:
Initialize(layoutService, contextService, actions, notificationService);
Если нужен быстрый старт:
Initialize();