Добавлен Studio
This commit is contained in:
182
Lattice.Studio/README.md
Normal file
182
Lattice.Studio/README.md
Normal file
@@ -0,0 +1,182 @@
|
||||
# **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();
|
||||
```
|
||||
Reference in New Issue
Block a user