182 lines
5.3 KiB
Markdown
182 lines
5.3 KiB
Markdown
# **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**
|
||
|
||
```xml
|
||
<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**
|
||
|
||
```csharp
|
||
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**
|
||
|
||
```xml
|
||
<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**
|
||
|
||
```csharp
|
||
public sealed partial class MainWindow : LatticeStudioWindow
|
||
{
|
||
public MainWindow()
|
||
{
|
||
InitializeComponent();
|
||
Title = "My App";
|
||
Initialize(); // стандартные сервисы
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 🧩 Инициализация вручную
|
||
|
||
Если нужны свои сервисы:
|
||
|
||
```csharp
|
||
Initialize(layoutService, contextService, actions, notificationService);
|
||
```
|
||
|
||
Если нужен быстрый старт:
|
||
|
||
```csharp
|
||
Initialize();
|
||
``` |