Что такое WPF?
Windows Presentation Foundation — один из компонентов ядра .NET Framework, который позволяет разработчикам создавать богатые, различные Windows приложения.
Как создать систему Drag&Drop?
Для реализации системы Drag&Drop в приложении WPF, сначала нужно добавить компонент Image на рабочую область. Для этого следует перейти в «Панель элементов» и найти объект Image, затем переместить его на рабочую область.
Далее поменять его размеры и указать изображению ширину и имя для обращения из скрипта. Width и Height будут равны 50 пикселям, в качестве изображения я укажу пуговицу, нужно прописать атрибут Source, значением которого будет полный путь до картинки, включая её имя и тип изображения. Имя данного объекта будет image.
Теперь у изображения нужно создать event (событие) которое срабатывает при нажатии на это изображение. Необходимо прописать MouseDown у изображения и выбрать предложенный вариант.
Так же прописывается MouseUp у изображения, компонента Grid и самой формы, прикрепляя все события на одну функцию.
После перехода к программной части формы (MainWindow.xaml.cs), можно увидеть две пустые функции.
Теперь нужно создать таймер, который будет вызывать функцию через некоторое время. Для этого создаётся переменную c типом DispatcherTimer и добавляется библиотека using System.Windows.Threading;
Теперь нужно запустить таймер. Для этого после инициализации компонентов прописывается следующий код:
dispatcherTimer.Tick += DispatcherTimer_Tick; // вызываем функцию по истечению таймера dispatcherTimer.Interval = new System.TimeSpan(0, 0, 0, 0, 1000 / 60); // задаём интервал (60 кадрров)
Далее создаётся функция, которая будет вызываться по истечению кода:
private void DispatcherTimer_Tick(object sender, System.EventArgs e) { }
В данной функции будет происходить перемещение изображения по полотну. Здесь же прописывается следующий код, который перемещает изображение:
// перемещение объекта image.Margin = new Thickness(Mouse.GetPosition(this).X - 25, Mouse.GetPosition(this).Y - 25, 0, 0);
Здесь задаётся изображению новые отступы от края полотна. В качестве отступа слева и сверху выступают координаты мыши относительно окна. Сделаем изображение посередине курсора, для этого вычтем половину ширины и высоты - 25.
Не стоит забывать добавить библиотек "using System.Windows.Input;" , которая позволяет взаимодействовать с мышью.
В функции которая выполняется при нажатии, прописываем следующий код:
dispatcherTimer.Start(); // запускаем таймер
В функции которая происходит при отпускании клавиши, вызываем остановку таймера:
dispatcherTimer.Stop(); // останавливаем таймер
Полный код:
Запуск приложения и проверка работоспособности:
Таким способом можно реализовать систему Drag&Drop в приложении WPF.
Автор статьи: Александр Каримов