UWP 拖拽文件
桌面环境下的UWP,加入拖拽模式还是会增加用户好感度的。
好了,先看一下我最新研发的【小微识花】吧,演示一下
炫酷,有没有,😂😂😂
而且这识别速度,也是杠杠的~~~
关于拖拽的实现,一般有两个方法。但是不论哪一个,首先相同的是,要对要对目标设置属性Alldrop=true;
就拿Grid作比方
<Grid AllowDrop="True"> </Grid>
1、原生实现
前台加点东西
<Grid AllowDrop="True" DragOver="Grid_DragOver" Drop="Grid_Drop">
在后台写代码:
private async void Grid_Drop(object sender, DragEventArgs e) { var defer = e.GetDeferral(); try { DataPackageView dpv = e.DataView; if (dpv.Contains(StandardDataFormats.StorageItems)) { List<StorageFile> files1 = new List<StorageFile>(); var files = await dpv.GetStorageItemsAsync(); foreach (var item in files) { //todo...... } } } finally { defer.Complete(); } } private void Grid_DragOver(object sender, DragEventArgs e) { e.AcceptedOperation = DataPackageOperation.Copy; e.DragUIOverride.IsCaptionVisible = false; e.DragUIOverride.IsContentVisible = true; e.DragUIOverride.IsGlyphVisible = false; e.Handled = true; }
2、利用WTS提供的DragDrop Services
前台引用:
xmlns:dd="using:XiaoweiFlowerRecognition.Services.DragAndDrop"
<Grid AllowDrop="True"> <dd:DragDropService.Configuration> <dd:DropConfiguration DropStorageItemsAction="{x:Bind GetStorageItem}" /> </dd:DragDropService.Configuration> </Grid>
后台代码就很简单了:
响应Action方法 GetStorageItem 即可
public Action<IReadOnlyList<IStorageItem>> GetStorageItem => ((items) => OnGetStorageItem(items)); public async void OnGetStorageItem(IReadOnlyList<IStorageItem> items) { foreach (var item in items) { //todo...... } }
推荐使用第二种方法吧,毕竟WTS也可以提供更多的服务来使用,很方便快捷的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人