DragAndDrop core
This commit is contained in:
47
Lattice.Layout.UI.WinUI/Docking/DockOverlayHost.cs
Normal file
47
Lattice.Layout.UI.WinUI/Docking/DockOverlayHost.cs
Normal file
@@ -0,0 +1,47 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user