Files
Lattice/Lattice.Layout.UI.WinUI/Docking/DockOverlayHost.cs
2026-01-18 16:33:35 +03:00

48 lines
1.3 KiB
C#

using Lattice.Layout.UI.Docking;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Windows.Foundation;
namespace Lattice.Layout.UI.WinUI.Docking;
/// <summary>
/// Контейнер для отображения подсветки зон докинга.
/// Обычно используется как Overlay-слой внутри WinUILayoutHost.
/// </summary>
public sealed class DockOverlayHost : Canvas
{
private DockOverlay? _currentOverlay;
public DockOverlayHost()
{
IsHitTestVisible = false;
}
/// <summary>
/// Отображает подсветку для указанной цели докинга.
/// </summary>
public void ShowOverlay(DockTarget target, Rect bounds)
{
if (_currentOverlay is null)
{
_currentOverlay = new DockOverlay();
Children.Add(_currentOverlay);
}
_currentOverlay.Zone = target.Zone;
_currentOverlay.Bounds = bounds;
_currentOverlay.Visibility = Visibility.Visible;
}
/// <summary>
/// Скрывает подсветку зоны докинга.
/// </summary>
public void HideOverlay()
{
if (_currentOverlay is not null)
{
_currentOverlay.Visibility = Visibility.Collapsed;
}
}
}