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; } } }