【发布时间】:2018-04-05 09:09:55
【问题描述】:
我试图在我的 WPF 应用程序中使用 ListView,它接受拖放 - 文件和目录,但如果是目录,它应该从它们获取文件,而不是它们本身。 我的 XAML:
<ListView ... AllowDrop="True" Drop="importListView_Drop">
...
</ListView>
我的代码:
private void importListView_Drop(object sender, DragEventArgs e)
{
var files = (string[])e.Data.GetData(DataFormats.FileDrop);
core.AddIntoImport(files);
}
这现在会产生输出,包括目录并省略其中的文件,f.e.
C:/Example/Files/MyFile.mp3
C:/Example/Files/SubDirectory/
...
虽然我希望它实际上从 SubDirectory 获取所有文件,而不是包含 SubDirectory 本身。我可以自己做到这一点:“是目录吗?-是的:排除它并从中获取所有文件”但问题是,f.e. 中是否包含一些更好的方法。事件参数已经?
为了让我自己更清楚,下面的代码在 WinForms 应用程序中完美地完成了这项工作。 WPF中有替代方案吗?
private void Form1_DragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
InsertImport(files);
}
private void Form1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.Copy;
}
【问题讨论】:
标签: c# wpf drag-and-drop