这个问题已经让我抓狂了一段时间,我不确定实际问题是什么。我正在尝试为我的一个应用程序添加拖放功能,特别是将文件从windows资源管理器拖放到应用程序中,以绕过使用FileOpenPicker
。
我在拖放上观看了MSDN视频(https://channel9.msdn.com/Series/Windows-10-development-for-absolute-beginners/UWP-053-UWP-SoundBoard-Adding-Drag-and-Drop)以及彻底阅读文档(https://learn.microsoft.com/en-us/windows/uwp/design/input/drag-and-drop)。
我创建了以下最基本的示例。
XAML:
<Grid AllowDrop="True"
CanDrag="True"
DragEnter="Grid_DragEnter"
DragLeave="Grid_DragLeave"
DragOver="Grid_DragOver"
Drop="Grid_Drop"
DropCompleted="Grid_DropCompleted"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
</Grid>
代码
private void Grid_DragEnter(object sender, DragEventArgs e)
{
Debug.WriteLine("DragEnter");
}
private void Grid_DragLeave(object sender, DragEventArgs e)
{
Debug.WriteLine("DragLeave");
}
private void Grid_DragOver(object sender, DragEventArgs e)
{
Debug.WriteLine("DragOver");
}
private void Grid_Drop(object sender, DragEventArgs e)
{
Debug.WriteLine("Drop");
}
private void Grid_DropCompleted(UIElement sender, DropCompletedEventArgs args)
{
Debug.WriteLine("DropCompleted");
}
问题是,当将单个或多个文件拖动到应用程序中时,不会触发任何事件。但是,从中拖放UIElements
确实会导致事件触发。我还在Appxmanifest
中添加了broadFileSystemAccess
功能,这并没有改变行为。
那么,如何将Windows资源管理器中的文件拖放功能添加到我的应用程序中呢?有没有声明我失踪了?
-
如果您以管理员身份运行VS或应用程序,请拖动&Drop将不起作用(出于安全原因,请参阅此处https://superuser.com/questions/59051/drag-and-drop-file-into-application-under-run-as-administrator
-
只要你的网格不包含任何内容,它就不会工作,你的窗口就会得到事件。尝试将背景设置为黑色或任何你喜欢的颜色,你的代码应该可以工作。