4.7 KiB
4.7 KiB
Lattice.UI.DragDrop
Кроссплатформенные абстракции для системы перетаскивания в Lattice UI Framework.
📦 О проекте
Lattice.UI.DragDrop предоставляет платформонезависимые интерфейсы и базовые классы для реализации drag-and-drop функциональности.
Этот проект служит основой для конкретных реализаций на различных платформах (WinUI, Uno Platform, MAUI и т.д.).
🎯 Особенности
- Абстрактные интерфейсы для источников перетаскивания и целей сброса
- Базовые классы поведения для упрощения реализации
- Платформонезависимая архитектура
- Поддержка сложных сценариев (переупорядочивание, вложенное перетаскивание)
- Расширяемая система событий
🔧 Интерфейсы
IDragVisualProvider
public interface IDragVisualProvider
{
object CreateDragVisual(DragInfo dragInfo, Point initialPosition);
void UpdateDragVisualPosition(object dragVisual, Point position);
void ReleaseDragVisual(object dragVisual);
}
IDropVisualAdorner
public interface IDropVisualAdorner
{
void Show(DropInfo dropInfo, Rect targetBounds);
void Update(DropInfo dropInfo);
void Hide();
}
📦 Установка
Добавьте проект как ссылку в ваше решение или установите как NuGet пакет:
<PackageReference Include="Lattice.UI.DragDrop" Version="1.0.0" />
🔗 Зависимости
Lattice.Core.DragDrop>= 1.0.0Lattice.Core.Geometry>= 1.0.0Microsoft.Extensions.DependencyInjection.Abstractions>= 8.0.0
🚀 Быстрый старт
1. Регистрация сервисов
using Lattice.UI.DragDrop.Extensions;
public void ConfigureServices(IServiceCollection services)
{
services.AddLatticeDragDrop();
}
2. Создание кастомного поведения
using Lattice.UI.DragDrop.Behaviors;
public class MyDragSource : DragSourceBehaviorBase<MyElement>
{
protected override void SubscribeToEvents(MyElement element)
{
// Подписка на события элемента
}
public override bool CanStartDrag(out DragInfo? dragInfo)
{
// Реализация проверки возможности перетаскивания
}
}
📚 API Reference
Основные типы
| Тип | Описание |
|---|---|
DragSourceBehaviorBase<T> |
Базовый класс для поведения источника |
DropTargetBehaviorBase<T> |
Базовый класс для поведения цели |
IDragVisualProvider |
Поставщик визуального представления |
IDropVisualAdorner |
Визуальный элемент обратной связи |
Расширения DI
AddLatticeDragDrop()- регистрация сервисов перетаскивания
🔄 Интеграция с платформенными проектами
Этот проект предназначен для наследования платформенными реализациями:
- WinUI:
Lattice.UI.DragDrop.WinUI - Uno Platform:
Lattice.UI.DragDrop.Uno(планируется) - MAUI:
Lattice.UI.DragDrop.Maui(планируется)
🧪 Тестирование
Проект включает модульные тесты для всех публичных API:
dotnet test Lattice.UI.DragDrop.Tests
📄 Лицензия
MIT License. Подробности в файле LICENSE.
🤝 Участие в разработке
- Форкните репозиторий
- Создайте ветку для вашей функции
- Сделайте коммит изменений
- Отправьте пул-реквест
📞 Поддержка
- Документация: lattice-framework.github.io
- Issues: GitHub Issues
- Обсуждения: GitHub Discussions