Я знаю, что были тонны ответов на этом предмете, но я все еще не могу заставить его работать вообще. Я включил AllowDrop на каждом управлении на каждом уровне приложения и попытался поймать DragEnter и Отбрасывание на каждом управлении напрасно. Я могу перетащить объекты в приложении, но любое время, я пытаюсь ввести что-то от Windows Explorer или рабочего стола, и т.д. это дает мне значок No. Какие-либо идеи, что я мог бы делать неправильно?
Вот пример того, что я делаю. Все еще не показывает курсор перемещения и не поразит функцию MainWindow_DragEnter.
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.AllowDrop = true;
this.DragEnter += new DragEventHandler(MainWindow_DragEnter);
}
void MainWindow_DragEnter(object sender, DragEventArgs e)
{
e.Effects = DragDropEffects.Move;
}
}
}
AllowDrop только активирует возможность использования перетаскивания. Вы должны справиться с этим сами.
Как вы видели, у объектов с AllowDrop также есть события DragEnter, DragOver, DragLeave. Вы должны закодировать то, что хотите, чтобы произошло в данный момент. Вы можете менять курсор, принимать выпавшие предметы и т. Д. Но вы должны сделать это самостоятельно. Например. найдите DragEventArgs.Effects.
Я только что открыл новое приложение WPF, выбрал окно, включил AllowDrop, добавил обработчик событий DragEnter и вставил туда: e.Effects = DragDropEffects.Move; У меня отлично работает.
Думаю, я решил свою проблему. Я работал с Visual Studio как администратор. Когда он запустил мое приложение, он не распознал перетаскивание из проводника, потому что проводник работал в пользовательском режиме. Надеюсь, этот тупой ход поможет кому-то другому.