我试图在我的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);
}
现在生成包括目录和省略文件的输出,例如。
C:/Example/Files/MyFile.mp3
C:/Example/Files/SubDirectory/
...
虽然我希望它实际上从SubDirectory获取所有文件而不包括SubDirectory本身。我可以自己做这个:“是目录? - 是的:排除它并从中获取所有文件”但问题是,是否有一些更好的方法包括在f.e.事件args已经?
为了让自己更清楚,以下代码在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;
}
答案 0 :(得分:0)
你可以用这个
var allFiles = files.Where(Directory.Exists)
.SelectMany(dir => Directory.GetFiles(dir, "*.*", SearchOption.AllDirectories))
.ToList();
请注意,如果您对子目录没有适当的权限,则会抛出此内容。在这种情况下,您将不得不手动执行此操作,并检查/忽略错误
答案 1 :(得分:0)
最后设法以这种方式做到了……
Spotify's