Forge
csharp4405de34
1using CommunityToolkit.Mvvm.ComponentModel;
2using CommunityToolkit.Mvvm.Input;
3
4namespace CascadeIDE.ViewModels;
5
6/// <summary>Сплиттеры рабочей области (MainGrid, обозреватель решения, Git и т.д.): режим «взлёт» — блокировка перетаскивания.</summary>
7public partial class MainWindowViewModel
8{
9 /// <summary>Когда true — IN AIR, границы зафиксированы; false — ON GND, сплиттеры можно двигать.</summary>
10 [ObservableProperty]
11 [NotifyPropertyChangedFor(nameof(WorkspaceSplitterLockButtonText))]
12 [NotifyPropertyChangedFor(nameof(WorkspaceSplitterLockButtonToolTip))]
13 [NotifyPropertyChangedFor(nameof(WorkspaceSplittersUnlocked))]
14 private bool _workspaceSplittersLocked;
15
16 /// <summary>Для привязки <c>IsEnabled</c> сплиттеров (в т.ч. из вложенного DataContext через <c>ElementName</c>).</summary>
17 public bool WorkspaceSplittersUnlocked => !WorkspaceSplittersLocked;
18
19 /// <summary>Краткая подпись для доступности (лампа: ON GND / IN AIR; мелодия tol).</summary>
20 public string WorkspaceSplitterLockButtonText => WorkspaceSplittersLocked ? "В воздухе" : "На земле";
21
22 public string WorkspaceSplitterLockButtonToolTip =>
23 WorkspaceSplittersLocked
24 ? "Сейчас: IN AIR — сплиттеры зафиксированы. Клик: ON GND (снова можно двигать PFD, редактор, MFD, обозреватель, Git…)."
25 : "Сейчас: ON GND — границы можно двигать. Клик: IN AIR (зафиксировать рабочую кабину).";
26
27 [RelayCommand]
28 private void ToggleWorkspaceSplittersLock() => WorkspaceSplittersLocked = !WorkspaceSplittersLocked;
29}
30
View only · write via MCP/CIDE