如何将n个文件拖放到ListBox中,并显示文件路径?

时间:2016-12-25 18:54:56

标签: c# wpf winforms drag-and-drop listbox

目前,当我使用Window_Drop事件将n个文件拖放到我的ListBox中时,我有这个代码。

string[] files = (string[]) e.Data.GetData(DataFormats.FileDrop, true);
listBox.Items.Add(files);

在WinForm中可以正常工作,它打印出我刚刚拖放到ListBox中作为项目的文件的路径。
但是当我在WPF中做同样的事情时,我得到了这个

  

String [] Array

作为输出而不是路径。

现在我知道WinForm的代码并没有完全转移到WPF,但我猜它会非常相似?

如何正确地将项目拖放到ListBox,并显示文件的路径?

2 个答案:

答案 0 :(得分:1)

不是将string[]添加到ListBox,而是需要从数组的指定索引添加一个字符串,如listBox.Items.Add(files[yourIndex]);

编辑:如果你要一次导入多个文件而不从同一个阵列中添加更多文件,你应该这样做:

foreach(string path in files)
{
    listBox.Items.Add(path);
}

答案 1 :(得分:0)

您可以将ListBox的ItemsSource属性设置为字符串[]:

string[] files = (string[]) e.Data.GetData(DataFormats.FileDrop, true);
listBox.ItemsSource = files;

在WPF中,您通常将ItemsControl(例如ListBox)的ItemsSource属性绑定到IEnumerable< T>。并在XAML标记中定义一个ItemTemplate,用于定义T类型的每个对象的外观:

WPF ListBox using ItemsSource and ItemTemplate

<ListBox x:Name="listBox">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}" Foreground="Green" FontSize="16" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>