44 lines
1.2 KiB
C#
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;
|
|
}
|
|
}
|
|
} |