48 lines
1.3 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|