Files
Lattice/Lattice.UI.DragDrop.WinUI/Services/WinUIDragVisualProvider.cs

44 lines
1.2 KiB
C#

using Lattice.Core.DragDrop.Models;
using Lattice.Core.Geometry;
using Lattice.UI.DragDrop.Abstractions;
using Lattice.UI.DragDrop.WinUI.Controls;
namespace Lattice.UI.DragDrop.WinUI.Services;
public class WinUIDragVisualProvider : IDragVisualProvider
{
private DragAdorner? _currentAdorner;
public object CreateDragVisual(DragInfo dragInfo, Point initialPosition)
{
// Создаем DragAdorner на основе данных
_currentAdorner = new DragAdorner
{
DragData = dragInfo.Data,
OpacityLevel = 0.8
};
// Настраиваем начальную позицию
_currentAdorner.UpdatePosition(initialPosition);
_currentAdorner.Show();
return _currentAdorner;
}
public void UpdateDragVisualPosition(object dragVisual, Point position)
{
if (dragVisual is DragAdorner adorner)
{
adorner.UpdatePosition(position);
}
}
public void ReleaseDragVisual(object dragVisual)
{
if (dragVisual is DragAdorner adorner)
{
adorner.Hide();
_currentAdorner = null;
}
}
}