Files
Lattice/Lattice.UI.DragDrop
2026-01-18 16:33:35 +03:00
..
2026-01-18 16:33:35 +03:00
2026-01-18 16:33:35 +03:00
2026-01-18 16:33:35 +03:00
2026-01-18 16:33:35 +03:00
2026-01-18 16:33:35 +03:00

Lattice.UI.DragDrop

Lattice Framework Version License

Кроссплатформенные абстракции для системы перетаскивания в 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.0
  • Lattice.Core.Geometry >= 1.0.0
  • Microsoft.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() - регистрация сервисов перетаскивания

🔄 Интеграция с платформенными проектами

Этот проект предназначен для наследования платформенными реализациями:

  1. WinUI: Lattice.UI.DragDrop.WinUI
  2. Uno Platform: Lattice.UI.DragDrop.Uno (планируется)
  3. MAUI: Lattice.UI.DragDrop.Maui (планируется)

🧪 Тестирование

Проект включает модульные тесты для всех публичных API:

dotnet test Lattice.UI.DragDrop.Tests

📄 Лицензия

MIT License. Подробности в файле LICENSE.

🤝 Участие в разработке

  1. Форкните репозиторий
  2. Создайте ветку для вашей функции
  3. Сделайте коммит изменений
  4. Отправьте пул-реквест

📞 Поддержка