如何实现桌面端MAUI应用文件拖入?是否存在相关Bug?
MAUI Windows拖入文件Bug说明及解决方案
- 该Bug确实存在于.NET MAUI的早期版本(主要是.NET 7及之前),表现为使用
Microsoft.Maui.Controls.DropGestureRecognizer无法接收来自Windows资源管理器的文件数据。 - .NET 8正式版本已修复此问题,如果你基于.NET 8或更高版本开发Windows桌面MAUI应用,拖入文件功能可正常工作。
- macOS平台的
DropGestureRecognizer不存在此特定Bug,从Finder拖入文件的功能在各主流MAUI版本中均可正常使用。
简单实现示例
在XAML中添加手势识别器:
<ContentView> <ContentView.GestureRecognizers> <DropGestureRecognizer Drop="OnDrop" /> </ContentView.GestureRecognizers> </ContentView>
在代码后台处理拖入事件:
private async void OnDrop(object sender, DropEventArgs e) { if (e.DataView.Contains(StandardDataFormats.Files)) { var files = await e.DataView.GetFilesAsync(); foreach (var file in files) { // 处理拖入的文件,比如获取路径 var filePath = file.FullPath; // 执行你的业务逻辑 } } }
额外注意事项
- Windows平台:确保项目目标框架为.NET 8+,若仍使用旧版本,可考虑升级框架来解决该Bug。
- macOS平台:若需要限制可拖入的文件类型,可在项目的
Info.plist中添加对应的文档类型声明,避免接收无关文件。
内容的提问来源于stack exchange,提问作者Gabriele Tedeschi
相关产品推荐
相关产品推荐

