namespace Lattice.Core.DragDrop.Abstractions; /// /// Определяет контракт для объектов, которые могут быть источником данных /// в операции перетаскивания. /// /// /// Объекты, реализующие этот интерфейс, могут инициировать операции перетаскивания /// и предоставлять данные для передачи другим элементам через механизм drag-and-drop. /// public interface IDragSource { /// /// Определяет, может ли объект начать операцию перетаскивания. /// /// /// Информация о перетаскивании, которая будет заполнена данными, если операция разрешена. /// /// /// true, если объект может начать перетаскивание; в противном случае — false. /// /// /// Этот метод вызывается системой перетаскивания для проверки возможности /// начала операции. Если метод возвращает true, он должен заполнить /// необходимыми данными. /// bool CanStartDrag(out Models.DragInfo? dragInfo); /// /// Начинает операцию перетаскивания. /// /// Информация о перетаскивании. /// /// true, если операция перетаскивания успешно начата; в противном случае — false. /// /// /// Этот метод вызывается, когда пользователь начинает перетаскивание элемента. /// Реализация должна подготовить данные для перетаскивания и, возможно, /// создать визуальное представление перетаскиваемого объекта. /// bool StartDrag(Models.DragInfo dragInfo); /// /// Вызывается при завершении операции перетаскивания. /// /// Исходная информация о перетаскивании. /// Эффекты, которые были применены при сбросе. /// /// Этот метод вызывается после завершения операции перетаскивания /// (успешного или неуспешного). Реализация может выполнить очистку /// или обновить состояние на основе результата операции. /// void DragCompleted(Models.DragInfo dragInfo, Enums.DragDropEffects effects); /// /// Вызывается при отмене операции перетаскивания. /// /// Исходная информация о перетаскивании. /// /// Этот метод вызывается, когда операция перетаскивания была отменена /// пользователем (например, нажатием клавиши Escape). /// void DragCancelled(Models.DragInfo dragInfo); }