【发布时间】:2021-02-05 20:08:27
【问题描述】:
这个问题已经让我发疯了一段时间,我不确定实际问题是什么。我正在尝试将拖放功能添加到我的一个应用程序中,特别是将文件从 Windows 资源管理器拖放到应用程序中,以便绕过使用 FileOpenPicker。
我观看了有关拖放 (https://channel9.msdn.com/Series/Windows-10-development-for-absolute-beginners/UWP-053-UWP-SoundBoard-Adding-Drag-and-Drop) 的 MSDN 视频,并彻底阅读了文档 (https://docs.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 资源管理器拖放到我的应用程序中?有没有我遗漏的声明?
【问题讨论】:
-
我建议尝试来自here 的样本。如果它的行为符合您的预期,请查看源代码。我认为您的示例应该按原样工作,我也很好奇为什么事件没有触发。
-
@jegtugado 我也复制并粘贴了该代码,并且具有完全相同的行为。拖放事件根本没有触发。